[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/28 03:01 / Filesize : 280 KB / Number-of Response : 1039
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part9



1 名前:デフォルトの名無しさん mailto:sage [2016/12/01(木) 16:58:30.97 ID:gTkHDluD.net]
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ Part8©2ch.net
echo.2ch.net/test/read.cgi/tech/1444216746/

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
runnable.com/
code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

342 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 03:22:50.68 ID:5gcIwgbE.net]
ブロックチェインの新手のコイン発掘か?

343 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 03:59:02.35 ID:kzKE4jeR.net]
>>334 Ruby
require 'bigdecimal'
[3, 4, 5, 7].each{|i|
n = 1000*i - 1
puts "N = %i => %i"%[i, ("%.#{n}f"%BigDecimal(i).sqrt(n)).count(?0)]
}


N = 3 => 2956
N = 4 => 3999
N = 5 => 4956
N = 7 => 6954

344 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 04:25:25.94 ID:kzKE4jeR.net]
>>336はミス。0がこんなに多いわけがない

require 'bigdecimal'
[3, 5, 7].each{|i|
n = 1000*i - 1
puts "N = %i => %i"%[i, BigDecimal(i).sqrt(n).floor(n).to_s(?F).count(?0)]
}

N = 3 => 309
N = 5 => 492
N = 7 => 738

345 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 07:13:48.73 ID:hDxZO8qP.net]
>>337
N = 5の場合が間違ってると思う
多分、丸めモードの関係か、精度が足りてないと思われる

346 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 09:51:11.17 ID:3gkxwDpM.net]
>>334 C++

#include <iostream>
#include <string>
#include "gmpxx.h"
int main () {
  int sq_me;
  while( std::cin >> sq_me ){
    int prec = 1000*sq_me, cnt = 0;
    mpf_class sq_out = sqrt( mpf_class(sq_me, prec*4) );
    mp_exp_t exp;
    auto str = sq_out.get_str( exp,10,prec );
    for( auto it=str.begin(); it!=str.end(); it++ ) if( *it=='0' ) ++cnt;
    std::cout << "N = " << sq_me << " => " << cnt+prec-str.length() << '\n';
  }
}

N = 3 => 309
N = 5 => 493
N = 7 => 738
N = 11 => 1079
N = 13 => 1305
N = 17 => 1664
N = 19 => 1875
N = 23 => 2265
N = 29 => 2911
N = 31 => 3113
N = 37 => 3795
N = 41 => 4095
N = 43 => 4312
N = 47 => 4798
N = 53 => 5340

347 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 11:54:07.74 ID:H5pSyGdF.net]
>>334 Squeak/Pharo Smalltalk

| sqrt |
sqrt := [:n :m |
 "ref. https://xar.sh/post/67066374255/ "
 | a b |
 a := 5 * n. b := 5.
 [:exit | [
  a >= b ifTrue: [a := a - b. b := b + 10] ifFalse: [
   b log > m ifTrue: [exit v

348 名前:alue] ifFalse: [
    a := a * 100. b := b // 10 * 100 + (b \\ 10)
   ]
  ]
 ] repeat] valueWithExit.
 b
].

#(3 5 7) collect: [:i | i -> (((sqrt value: i value: i*1000) asString first: i*1000) occurrencesOf: $0)]

"=> {3->309 . 5->493 . 7->738}"
[]
[ここ壊れてます]

349 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 12:18:57.24 ID:hDxZO8qP.net]
>>339
N = 29とN=41の場合が間違ってる可能性? それ以外は正しい模様
N = 29 => 2912、N = 41 => 4094 じゃなかろうか

>>340
合ってる

350 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 12:48:13.59 ID:1hnJaOYb.net]
>>334 Perl5
ideone.com/fAyh2l



351 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 13:10:39.20 ID:1hnJaOYb.net]
>>334 Perl5
ideone.com/cMBD8o

>>342 をもう少しすっきり書けたので差し替え。

352 名前:デフォルトの名無しさん mailto:sage [2017/07/08(土) 13:31:31.09 ID:3gkxwDpM.net]
>>341
> N = 29 => 2912、N = 41 => 4094 じゃなかろうか

それが正しいようです
GNU MPだとどうしても最後の桁は四捨五入?されるようで
任意のNに対して正確な答えを出すのは面倒なので修正は断念

353 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 10:26:36.71 ID:aJSGzdPS.net]
結局バイナリーツリーになっちゃったなぁ。むずかし。

354 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 10:55:01.51 ID:xLkjNLhf.net]
>>344
考え直したら面倒じゃなかった

>>334 C++
codepad.org/k0Sq8Fqo


N=10000くらいまでなら現実的な時間で計算出来そうだ

355 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 11:25:12.20 ID:nhQrw0mT.net]
N=100000, 1億桁のくらいなら現実的な時間で出来る

丸めは切り捨て?四捨五入?

356 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 11:33:40.13 ID:nhQrw0mT.net]
ルートの計算は速い
整数のルートは特に速い

357 名前:346 mailto:sage [2017/07/09(日) 12:21:20.78 ID:4Kodr3MO.net]
>>347
GNU MPだとget_str() とか gmp_sprintf() では四捨五入されるようなので
floor() であらかじめ切り捨ててから get_str() した

358 名前:デフォルトの名無しさん [2017/07/09(日) 12:57:37.64 ID:DBjzEn12.net]
ルートの問題で初めてきたが、これってゼロの個数に上限があるのか? 簡単に求まるのか?
連続するゼロの個数の最大だろ?
無理数は規則なく無限に続くから、ゼロの個数ももし1000個連続が見つかれば、1001個もいつかでるとおもうんだが。

359 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 13:14:46.15 ID:df6kAKcY.net]
最大って何の話しとるんや

360 名前:デフォルトの名無しさん [2017/07/09(日) 13:28:51.97 ID:DBjzEn12.net]
もとめる桁数のほうに上限があったのか、それを見逃してた。



361 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 13:45:03.68 ID:NvRZfELm.net]
連続する個数でもないぞw

362 名前:デフォルトの名無しさん [2017/07/09(日) 13:51:59.10 ID:DBjzEn12.net]
どっちも間違えたな、ゼロの総数だったか。

363 名前:デフォルトの名無しさん mailto:sage [2017/07/09(日) 19:14:37.92 ID:6MYOcrZ9.net]
>>349
floorを行った後の結果に誤差は無い
という検証は出来てるの?
何もしてないなら、それはたまたま偶然当たったっていうだけだぞ

ていうか、君には聞いてない
出題者の意図を聞いてる

364 名前:デフォルトの名無しさん [2017/07/11(火) 15:16:56.21 ID:1hL73PK3.net]
√2でなるべく長い0の連続をみつけるは?

365 名前:デフォルトの名無しさん [2017/07/11(火) 15:49:47.43 ID:QxseLuPf.net]
>>355
君には向いて無いよ

366 名前: ◆QZaw55cn4c mailto:sage [2017/07/11(火) 16:29:49.99 ID:ZfeFayuI.net]
>>355
>floorを行った後の結果に誤差は無い
>という検証は出来てるの?

ぱっとみ当然だと思うんだが

>>356
何桁求めるか指定しないと意味がないのでは?

367 名前: ◆QZaw55cn4c mailto:sage [2017/07/11(火) 16:35:18.57 ID:ZfeFayuI.net]
>>358
ん、考え直した
10進に変換した結果にて 99999 とかが末尾にあるようでは、余分の計算はしないと

368 名前:いけないね []
[ここ壊れてます]

369 名前:デフォルトの名無しさん mailto:sage [2017/07/11(火) 18:55:08.87 ID:dSS1j36W.net]
[][Tebla][]

}

000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS

001-GYORLith"0\R"/"ESUBA"%$%

HADO-"EM","L","O","NU"###END

370 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 06:57:35.22 ID:PYQ8V1MO.net]
>>296
ideone.com/VzYVY9
C++。解けた気がする。
状態をメモ化してみた。
何で動いてるのか自分でもよくわからない。
暇だったので解いてみた。



371 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:42:51.88 ID:PYQ8V1MO.net]
あー多倍長精度演算ほしー。もちろん標準で。

372 名前: ◆QZaw55cn4c mailto:sage [2017/07/14(金) 07:55:58.80 ID:TDGI45F0.net]
>>362
私も欲しかったので作ってしまった、今 >>334 を奮闘中

373 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:56:52.78 ID:PYQ8V1MO.net]
>>363
それはすごいな。
後々破棄するようなものを作るモチベーションが出てこないよ。

374 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:57:44.37 ID:TDGI45F0.net]
>>364
書き捨てに慣れてしまったんだ‥

375 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 07:59:21.83 ID:PYQ8V1MO.net]
>>365
あはは・・・。
コード書き捨てるのは良いけど、道具書き捨てるのは俺には向いてないわ。
なので、標準待ち。

376 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 09:33:33.04 ID:gEZu1299.net]
boostという任意倍長の計算Libraryがあります。
C++では使えるそうです。

377 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 09:38:45.73 ID:PYQ8V1MO.net]
>>367
Boostも良いんだけどね。残念なことにあれは実験環境で準標準って扱いなんだよなぁ。
あれから取り入れられるライブラリも多いんだけど、標準じゃないからね。
残念なことに。

378 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 12:49:16.12 ID:gnKUWanp.net]
まあ標準ライブラリしか使わない縛りをしたければ好きにすればいいんじゃない?

379 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 14:27:07.19 ID:JyiCltLg.net]
車輪の再発明

380 名前:デフォルトの名無しさん mailto:sage [2017/07/14(金) 14:31:43.15 ID:DwybRUfK.net]
競プロみたいな相手方の環境使う物だと標準と準標準の差はでかい
自分の環境なら導入すればいいだけだが



381 名前: ◆QZaw55cn4c mailto:sage [2017/07/14(金) 18:52:31.62 ID:TDGI45F0.net]
>>370
個体発生は系統発生を繰り返す

382 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 12:42:06.98 ID:odVkuNfb.net]
>>361
厳密解を出しているのなら、チャレンジ
(わかって近似値解狙いなら気にしないで)

"14432" と "887654329"

両方とも既出の"貪欲つぶし"(?)数列

"14432"は 20秒 (ゼロインデック順で02341)
"887654329"は 80秒(同123456708)でいける。

383 名前:デフォルトの名無しさん mailto:sage [2017/07/15(土) 14:59:21.20 ID:OEoVgGO0.net]
>>373
ideone.com/cBzPSj
C++。それ解くとほかの問題が解けなくなる。
厳密解のつもりだったが、ちょっと自分の領分超えてるなぁ。
うまくいかないものだ。
真実が奥の方にあると貪欲法は弱いな。Orz

384 名前:デフォルトの名無しさん [2017/07/16(日) 16:33:07.01 ID:8ZBD9z9c.net]
お題:
自分用多倍長整数演算関数

…って思ったけど、処理系の標準ではないとか、仕事でGNU MP使っては駄目とかの
制約で、簡易的なもの(乗算くらいまでとか)を書いた事ある人は少なくないと見た。

385 名前:デフォルトの名無しさん mailto:sage [2017/07/16(日) 18:30:49.57 ID:8+Akms5T.net]
多倍長整数演算がサポートされている言語を使う

終わり

386 名前: ◆QZaw55cn4c mailto:sage [2017/07/16(日) 18:54:09.85 ID:eA1jggM5.net]
>>375
C++98 codepad.org/hUObVCsR
オートボクシング等はなく便利にはできていない.

387 名前:デフォルトの名無しさん [2017/07/16(日) 2 ]
[ここ壊れてます]

388 名前:0:34:05.63 ID:yctBkD01.net mailto: 掛け算の実装がキモだろう。
ここがボトルネックになるはず。
ここができると円周率とか、ルート計算も高速化できるはず。
[]
[ここ壊れてます]

389 名前: ◆QZaw55cn4c mailto:sage [2017/07/16(日) 20:36:24.09 ID:eA1jggM5.net]
>>378
うん,FFTを使うそうだが‥いまいちよくわからない

390 名前:375 mailto:sage [2017/07/16(日) 20:41:46.81 ID:8ZBD9z9c.net]
>>376
仕事で言語を選べる立場になってみたいものだわ。
この言語でやってってののは多々あるけど…orz

>>377
Karatsuba-Ofman法を目指してごーごー



391 名前:デフォルトの名無しさん mailto:sage [2017/07/17(月) 22:48:25.95 ID:5edeqhg+.net]
>>296
手計算で計算出来るレベルにまで計算量を減らせた
もちろん数学的な裏付け付きで
ある条件を見たせば一瞬で求まる

"123456789123456789" > 98秒
残念ながら、これだけはその条件を満たしてない

392 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 06:37:17.84 ID:nFCFlf58.net]
>>381
22とか2323もその条件を満たしてない感じ?

393 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:37:05.09 ID:Ew0RSScO.net]
22 は微妙
2323 は大丈夫

394 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 07:41:44.22 ID:Ew0RSScO.net]
まだコードになってないんで、
コードになったらアップします

寿司を食べる時間 < レーンの回転周期
という前提をつけちゃおうと思ったけど、
つけない方が良さそうですね

寿司を食べる時間がレーンの回転周期の整数倍の寿司は
ちょっと特別な処理が必要

395 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 08:01:32.43 ID:Ew0RSScO.net]
整数倍の寿司が無いもので
条件に当てはまらない最小は
2222
かな

396 名前:デフォルトの名無しさん mailto:sage [2017/07/18(火) 08:49:51.93 ID:YLlwVFMJ.net]
>>334 SageMath
ttps://sagecell.sagemath.org/?q=brdclf

普通に(?)多桁のisqrt()なので何の捻りも無し。

397 名前:386 mailto:sage [2017/07/18(火) 09:39:56.20 ID:YLlwVFMJ.net]
>>339
つ mpz_sqrt()

398 名前:デフォルトの名無しさん mailto:sage [2017/07/19(水) 18:12:29.37 ID:Np9hKHT2.net]
>>296
>>373
ideone.com/B9vl8l
C++。結局、i7-6700のmem2G使って7分で解けた。
どうしようもない位遅いな。
でも一応題意には添えたと思う。
もう見たくない・・・。Orz

高速化するにはインラインアセンブリ使うか、スレッド分割できるようなアルゴリズムかんがえるか。
よくわからんけど、数学で頑張ってる人に期待だ。

399 名前:386 mailto:sage [2017/07/20(木) 01:57:16.81 ID:Q7XnESC/.net]
100のべき乗に変更
ttp://sagecell.sagemath.org/?q=mciykc

400 名前:デフォルトの名無しさん mailto:sage [2017/07/21(金) 15:21:18.13.net]
>>296
ideone.com/mXPglY
C++。試しに再起化してみたら処理速度倍になった。
自分の環境では3分ちょいで解ける。
相変わらずメモリ馬鹿食いするけど。
もう俺には無理。

俺の中では終了でーす。Orz



401 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 08:54:36.28 ID:OQXA8cUK.net]
>>388
数学で頑張ってる人だけど、
もうちょっとまって

>>296の問題だけなら簡単だけど、
まだ全体を解明できてない

というか、忙しくて>>381から進んでない

402 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 08:55:28.19 ID:OQXA8cUK.net]
このスレが無くならないうちに解明します

403 名前:デフォルトの名無しさん mailto:sage [2017/07/22(土) 10:43:30.03 ID:apsnR2Z0.net]
>>391
wktkデス!
コード見るのが好きなのでぜひ完走していただけたらと思います。

404 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 11:26:56.94 ID:ipiEUPYV.net]
>>375
のほかの実装はでてこないねぇ‥

405 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 12:53:55.68 ID:7fREas1L.net]
>>394
使えるコードにするためには、規模がでかくなりすぎるから

406 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:15:20.13 ID:ipiEUPYV.net]
C/C++ で最長1000行ぐらいとみて、2日ぐらいあれば、とりあ

407 名前:ヲず動く
土日で仕上がってくるんじゃないかと期待してたんだが
[]
[ここ壊れてます]

408 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:18:11.58 ID:7fREas1L.net]
速度が考えられてないコードなんて実用にはならないよ

409 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:21:31.79 ID:7fREas1L.net]
ていうか、
コードに対する条件とか
サポートする機能とか
条件が無さすぎる

410 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:24:57.75 ID:ipiEUPYV.net]
速度‥か‥

どうしてもローテートとかキャリーフラグとかを使いたいから、これはアセンブラの領域になるね
よくみかけるアセンブラ中毒者が今頃爪を研いでいるのだろうか?



411 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:25:42.29 ID:ipiEUPYV.net]
>>398
そこは「自分用」だから自由に決めていいんでないかい?

412 名前:デフォルトの名無しさん [2017/07/23(日) 14:49:34.77 ID:TcY6qE9r.net]
>>394

当日に >>305>>390 より10倍以上早いのがでているだろう。
しかも 計算量まで書いてある

413 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 14:53:19.94 ID:ipiEUPYV.net]
>>401
お題が違うのでは?

414 名前:デフォルトの名無しさん [2017/07/23(日) 15:05:28.62 ID:TcY6qE9r.net]
>>402 >>394
確かに違った、すいません。

c++多倍長なら、karatsubaにも対応して300行くらいの以下をパクって使うのも一案

sites.google.com/site/indy256/algo_cpp/bigint

415 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 15:09:21.91 ID:ipiEUPYV.net]
>>403
base 10進ならば、表示(operator<<) が楽でいいね、なるほど、それは思いつかなかった

416 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:51:44.88 ID:7fREas1L.net]
>>399
通常、
処理時間のほとんどが乗算
乗算のほとんどがFFT
アセンブラの出番は当分先

417 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:52:43.21 ID:7fREas1L.net]
FFTのライブラリをどこからか持ってくるのでもいいけど、
それなら素直に多倍長ライブラリを持ってくれば
ってことになる

418 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 16:54:07.19 ID:7fREas1L.net]
今は浮動小数点演算が速いので、
カラツバの出番はあまりない

419 名前:デフォルトの名無しさん mailto:sage [2017/07/23(日) 18:50:17.74 ID:5CSy1R8t.net]
基数を10のべき乗にするとか(printf()的なものが簡単だから)、乗算はunsigned shortやintとの
乗算に限るとか、除算無しとかいうのは…

プログラムの本体に組み込まれてしまって、再利用可能なライブラリの形で括りだされてる事の
方が少ないかw

420 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 00:48:44.80 ID:XgJeE+LA.net]
>>6-285 SageMath
ttp://sagecell.sagemath.org/?q=veftjc



421 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 18:24:00.06 ID:UuUAOyUA.net]
>>408
裁定ラインとしては、乗算は Bigint×Bigint、および除算の実装ですかね、でも足し算の回数での乗算や引き算の回数での除算は嫌ですね

422 名前:デフォルトの名無しさん [2017/07/24(月) 18:58:12.05 ID:5ve8i6tz.net]
お題:お題スレ3の>>170をファレイ数列を使って解く。
peace.2ch.net/test/read.cgi/tech/1390525149/170

423 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:10:35.21 ID:nJVItCRy.net]
>>411 Ruby
def farey_sequence(n)
(1..n-1).map{|i| 1r*i/n}
end

def ans_411(m)
(2..m).map{|i| farey_sequence(i)}.flatten.uniq.sort
end

ans_411 3 #=> [(1/3), (1/2), (2/3)]
ans_411 5 #=> [(1/5), (1/4), (1/3), (2/5), (1/2), (3/5), (2/3), (3/4), (4/5)]

424 名前:デフォルトの名無しさん mailto:sage [2017/07/24(月) 19:11:05.16 ID:7nQ6Z7f9.net]
>>296
超高速版が出来ました!
ideone.com/FrRkof

一皿9秒が上限であれば、計算オーダーはn
関数自体は何秒でも大丈夫です

コードだけじゃ意味がわからないでしょうけど、とりあえずコードだけ
あまりテストしてないので、バグって

425 名前:スらごめんなさい []
[ここ壊れてます]

426 名前:デフォルトの名無しさん [2017/07/24(月) 23:00:47.69 ID:fjGi9Yh0.net]
オーダーnは凄いな

427 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 05:40:32.49 ID:ubbfnjuS.net]
>>413
うーんわからん。
俺の思考とは別系統かな。
ホントに0秒で解けてるし、素晴らしい。
素直に賞賛。

428 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:52:16.57 ID:bLUUDw7G.net]
回転寿しの問題は、部分的な最短経路が全体の最短経路にならないんだよな
だが最短時間はレーン長の2倍程度の再帰回数で出る
そのあと数十億回再帰して総当たりしてもそれより短くならない
最後の皿から逆方向に探索してもおそらく同じ状況

429 名前:デフォルトの名無しさん mailto:sage [2017/07/25(火) 11:56:47.84 ID:bLUUDw7G.net]
例えば、”122” は最短時間6だが、1周目で2番目の要素”2”をパスしないとそうならない

430 名前:411 mailto:sage [2017/07/26(水) 19:54:35.63 ID:6H34MdHA.net]
>>412
ファレイ数列の中間数(mediant)を再帰的に生成すると、uniqもsortも要らないのだけど、
mが3や5だと大差無いかw



431 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 20:50:49.45 ID:s8dUUqTb.net]
>>411
リンク先が見えません
問題文をもう一回書いてください

432 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 20:52:34.29 ID:s8dUUqTb.net]
と思ったら見れました

ファレイ数列を使って何かを解くわけじゃなくて、
ファレイ数列を求める問題?

433 名前:411 mailto:sage [2017/07/26(水) 23:20:07.89 ID:6H34MdHA.net]
>>420
元の問題はそういうもの(=ファレイ数列の両端(0/1と1/1)無し版を求める問題)と
解釈してますです。

434 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:26:01.52 ID:lPM9zwS7.net]
#include <list>
#include <iostream>
const int N_MAX = 10;
struct RATIONAL {
int num;
int den;
};
int main() {
std::list < RATIONAL > farey;
RATIONAL zero = {0, 1};
RATIONAL one = {1, 1};
farey.push_back(zero);
farey.push_back(one);
for (int n = 1; n <= N_MAX; n++){
for (std::list < RATIONAL > ::iterator i1 = farey.begin(), i0 = i1++; i1 != farey.end(); i0 = i1, i1++) {
if (i0->den + i1->den <= n) {
RATIONAL m = {i0->num + i1->num, i0->den + i1->den};
farey.insert(i1, m);
}
}
std::cout << n << " : ";
for (std::list < RATIONAL > ::iterator i = farey.begin(); i != farey.end(); i++) {
std::cout << i->num << "/" << i->den << " ";
}
std::cout << "\n";
}
return 0;
}

435 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:29:22.49 ID:lPM9zwS7.net]
これから0と1を除けば良いって問題であれば、
表示のループに以下を加えれば
if (i->den != 1)

436 名前:デフォルトの名無しさん mailto:sage [2017/07/26(水) 23:31:57.11 ID:lPM9zwS7.net]
問題の意味も意図も良くわからん

出題者が「そういうものと解釈しています」とか
出題者が >>418 みたいな回答をバカにする発言とか

なんか非常に感じが悪い

437 名前:412 mailto:sage [2017/07/27(木) 00:12:38.86 ID:qteH6K3e.net]
そもそも>>412のfarey_sequenceは定義が間違ってたわ
んでもって再帰にすると>>412より遅くなるという
Ruby

class Farey
def self.[](m)
if m == 1
[0r, 1r]
else
succ(m - 1)
end
end

def self.succ(m)
self[m].each_cons(2).inject([0r]){|s, (a, b)|
x = a.denominator + b.denominator
s << 1r*(a.numerator + b.numerator)/x if x == m + 1
s << b
}
end
end

Farey[3] # => [(0/1), (1/3), (1/2), (2/3), (1/1)]
Farey[5] # => [(0/1), (1/5), (1/4), (1/3), (2/5), (1/2), (3/5), (2/3), (3/4), (4/5), (1/1)]

438 名前:デフォルトの名無しさん mailto:sage [2017/07/27(木) 01:59:46.61 ID:GuEy9AL1.net]
>>411 Java
https://ideone.com/w0q7cN

439 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 18:51:16.80 ID:XBSdfIgC.net]
>>375
のほかの実装はでてこないねぇ‥

440 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:19:26.77 ID:mqZJq6H+.net]
昔brainf**kで実装したのあるけどちょっとなぁ



441 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:24:55.65 ID:WViVOgsq.net]
また懐かしい言語を

442 名前:デフォルトの名無しさん mailto:sage [2017/07/28(金) 19:26:36.86 ID:WViVOgsq.net]
どうせならチューリングマシンで作ってよ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<280KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef