プログラミングのお題スレです。
前スレ
プログラミングのお題スレ Part8©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1444216746/
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
http://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
http://runnable.com/
http://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
探検
プログラミングのお題スレ Part9 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/12/01(木) 16:58:30.97ID:gTkHDluD
332318
2017/07/06(木) 23:37:37.26ID:0agEc1HZ 「打ち切る」という言葉を
>318
>…
>同じ最小値が一定回数以上連続して繰り返し検出されるようになったら
>最短値に収束したと見なし、探索を打ち切ることによって短時間で
>解を出力できるようにした。打ち切り上限は10をハードコードしてあるが
では「その入力に対する求解を中断する」ところで使い、
>319
> >>318
> 書き忘れたけど、食事秒数を探索中に、それまでに見つかっている最小病数を超えたら
> 打ち切るという、簡単な枝刈りを取り入れてあります。
では「その枝の下の方への探索をせず、別の枝の探索に移る」枝刈りの
ところで使ったのが誤解を招いてしまったのかな…
>318
>…
>同じ最小値が一定回数以上連続して繰り返し検出されるようになったら
>最短値に収束したと見なし、探索を打ち切ることによって短時間で
>解を出力できるようにした。打ち切り上限は10をハードコードしてあるが
では「その入力に対する求解を中断する」ところで使い、
>319
> >>318
> 書き忘れたけど、食事秒数を探索中に、それまでに見つかっている最小病数を超えたら
> 打ち切るという、簡単な枝刈りを取り入れてあります。
では「その枝の下の方への探索をせず、別の枝の探索に移る」枝刈りの
ところで使ったのが誤解を招いてしまったのかな…
333デフォルトの名無しさん
2017/07/07(金) 04:22:27.25ID:pbX9YCbr 3次の動的計画法ってどんだけメモリ食うんや?
334デフォルトの名無しさん
2017/07/08(土) 03:20:24.48ID:hDxZO8qP お題: 自然数Nの平方根を整数部含めて(1000*N)桁求めたとき、出現する0の個数を数える
たとえば、N = 4の時ルート4を4000桁(整数部1桁+小数部3999桁)求めたとき、出現する0の個数は3999個
N = 3 => ?
N = 5 => ?
N = 7 => ?
たとえば、N = 4の時ルート4を4000桁(整数部1桁+小数部3999桁)求めたとき、出現する0の個数は3999個
N = 3 => ?
N = 5 => ?
N = 7 => ?
335デフォルトの名無しさん
2017/07/08(土) 03:22:50.68ID:5gcIwgbE ブロックチェインの新手のコイン発掘か?
336デフォルトの名無しさん
2017/07/08(土) 03:59:02.35ID:kzKE4jeR >>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
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
337デフォルトの名無しさん
2017/07/08(土) 04:25:25.94ID:kzKE4jeR >>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
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
338デフォルトの名無しさん
2017/07/08(土) 07:13:48.73ID:hDxZO8qP339デフォルトの名無しさん
2017/07/08(土) 09:51:11.17ID:3gkxwDpM >>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
#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
340デフォルトの名無しさん
2017/07/08(土) 11:54:07.74ID:H5pSyGdF >>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 value] 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}"
| 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 value] 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}"
341デフォルトの名無しさん
2017/07/08(土) 12:18:57.24ID:hDxZO8qP342デフォルトの名無しさん
2017/07/08(土) 12:48:13.59ID:1hnJaOYb343デフォルトの名無しさん
2017/07/08(土) 13:10:39.20ID:1hnJaOYb344デフォルトの名無しさん
2017/07/08(土) 13:31:31.09ID:3gkxwDpM >>341
> N = 29 => 2912、N = 41 => 4094 じゃなかろうか
それが正しいようです
GNU MPだとどうしても最後の桁は四捨五入?されるようで
任意のNに対して正確な答えを出すのは面倒なので修正は断念
> N = 29 => 2912、N = 41 => 4094 じゃなかろうか
それが正しいようです
GNU MPだとどうしても最後の桁は四捨五入?されるようで
任意のNに対して正確な答えを出すのは面倒なので修正は断念
345デフォルトの名無しさん
2017/07/09(日) 10:26:36.71ID:aJSGzdPS 結局バイナリーツリーになっちゃったなぁ。むずかし。
346デフォルトの名無しさん
2017/07/09(日) 10:55:01.51ID:xLkjNLhf347デフォルトの名無しさん
2017/07/09(日) 11:25:12.20ID:nhQrw0mT N=100000, 1億桁のくらいなら現実的な時間で出来る
丸めは切り捨て?四捨五入?
丸めは切り捨て?四捨五入?
348デフォルトの名無しさん
2017/07/09(日) 11:33:40.13ID:nhQrw0mT ルートの計算は速い
整数のルートは特に速い
整数のルートは特に速い
349346
2017/07/09(日) 12:21:20.78ID:4Kodr3MO350デフォルトの名無しさん
2017/07/09(日) 12:57:37.64ID:DBjzEn12 ルートの問題で初めてきたが、これってゼロの個数に上限があるのか? 簡単に求まるのか?
連続するゼロの個数の最大だろ?
無理数は規則なく無限に続くから、ゼロの個数ももし1000個連続が見つかれば、1001個もいつかでるとおもうんだが。
連続するゼロの個数の最大だろ?
無理数は規則なく無限に続くから、ゼロの個数ももし1000個連続が見つかれば、1001個もいつかでるとおもうんだが。
351デフォルトの名無しさん
2017/07/09(日) 13:14:46.15ID:df6kAKcY 最大って何の話しとるんや
352デフォルトの名無しさん
2017/07/09(日) 13:28:51.97ID:DBjzEn12 もとめる桁数のほうに上限があったのか、それを見逃してた。
353デフォルトの名無しさん
2017/07/09(日) 13:45:03.68ID:NvRZfELm 連続する個数でもないぞw
354デフォルトの名無しさん
2017/07/09(日) 13:51:59.10ID:DBjzEn12 どっちも間違えたな、ゼロの総数だったか。
355デフォルトの名無しさん
2017/07/09(日) 19:14:37.92ID:6MYOcrZ9356デフォルトの名無しさん
2017/07/11(火) 15:16:56.21ID:1hL73PK3 √2でなるべく長い0の連続をみつけるは?
357デフォルトの名無しさん
2017/07/11(火) 15:49:47.43ID:QxseLuPf >>355
君には向いて無いよ
君には向いて無いよ
360デフォルトの名無しさん
2017/07/11(火) 18:55:08.87ID:dSS1j36W [][Tebla][]
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
361デフォルトの名無しさん
2017/07/14(金) 06:57:35.22ID:PYQ8V1MO362デフォルトの名無しさん
2017/07/14(金) 07:42:51.88ID:PYQ8V1MO あー多倍長精度演算ほしー。もちろん標準で。
364デフォルトの名無しさん
2017/07/14(金) 07:56:52.78ID:PYQ8V1MO365デフォルトの名無しさん
2017/07/14(金) 07:57:44.37ID:TDGI45F0 >>364
書き捨てに慣れてしまったんだ‥
書き捨てに慣れてしまったんだ‥
366デフォルトの名無しさん
2017/07/14(金) 07:59:21.83ID:PYQ8V1MO367デフォルトの名無しさん
2017/07/14(金) 09:33:33.04ID:gEZu1299 boostという任意倍長の計算Libraryがあります。
C++では使えるそうです。
C++では使えるそうです。
368デフォルトの名無しさん
2017/07/14(金) 09:38:45.73ID:PYQ8V1MO369デフォルトの名無しさん
2017/07/14(金) 12:49:16.12ID:gnKUWanp まあ標準ライブラリしか使わない縛りをしたければ好きにすればいいんじゃない?
370デフォルトの名無しさん
2017/07/14(金) 14:27:07.19ID:JyiCltLg 車輪の再発明
371デフォルトの名無しさん
2017/07/14(金) 14:31:43.15ID:DwybRUfK 競プロみたいな相手方の環境使う物だと標準と準標準の差はでかい
自分の環境なら導入すればいいだけだが
自分の環境なら導入すればいいだけだが
>>370
個体発生は系統発生を繰り返す
個体発生は系統発生を繰り返す
373デフォルトの名無しさん
2017/07/15(土) 12:42:06.98ID:odVkuNfb >>361
厳密解を出しているのなら、チャレンジ
(わかって近似値解狙いなら気にしないで)
"14432" と "887654329"
両方とも既出の"貪欲つぶし"(?)数列
"14432"は 20秒 (ゼロインデック順で02341)
"887654329"は 80秒(同123456708)でいける。
厳密解を出しているのなら、チャレンジ
(わかって近似値解狙いなら気にしないで)
"14432" と "887654329"
両方とも既出の"貪欲つぶし"(?)数列
"14432"は 20秒 (ゼロインデック順で02341)
"887654329"は 80秒(同123456708)でいける。
374デフォルトの名無しさん
2017/07/15(土) 14:59:21.20ID:OEoVgGO0 >>373
http://ideone.com/cBzPSj
C++。それ解くとほかの問題が解けなくなる。
厳密解のつもりだったが、ちょっと自分の領分超えてるなぁ。
うまくいかないものだ。
真実が奥の方にあると貪欲法は弱いな。Orz
http://ideone.com/cBzPSj
C++。それ解くとほかの問題が解けなくなる。
厳密解のつもりだったが、ちょっと自分の領分超えてるなぁ。
うまくいかないものだ。
真実が奥の方にあると貪欲法は弱いな。Orz
375デフォルトの名無しさん
2017/07/16(日) 16:33:07.01ID:8ZBD9z9c お題:
自分用多倍長整数演算関数
…って思ったけど、処理系の標準ではないとか、仕事でGNU MP使っては駄目とかの
制約で、簡易的なもの(乗算くらいまでとか)を書いた事ある人は少なくないと見た。
自分用多倍長整数演算関数
…って思ったけど、処理系の標準ではないとか、仕事でGNU MP使っては駄目とかの
制約で、簡易的なもの(乗算くらいまでとか)を書いた事ある人は少なくないと見た。
376デフォルトの名無しさん
2017/07/16(日) 18:30:49.57ID:8+Akms5T 多倍長整数演算がサポートされている言語を使う
終わり
終わり
378デフォルトの名無しさん
2017/07/16(日) 20:34:05.63ID:yctBkD01 掛け算の実装がキモだろう。
ここがボトルネックになるはず。
ここができると円周率とか、ルート計算も高速化できるはず。
ここがボトルネックになるはず。
ここができると円周率とか、ルート計算も高速化できるはず。
>>378
うん,FFTを使うそうだが‥いまいちよくわからない
うん,FFTを使うそうだが‥いまいちよくわからない
380375
2017/07/16(日) 20:41:46.81ID:8ZBD9z9c381デフォルトの名無しさん
2017/07/17(月) 22:48:25.95ID:5edeqhg+ >>296
手計算で計算出来るレベルにまで計算量を減らせた
もちろん数学的な裏付け付きで
ある条件を見たせば一瞬で求まる
"123456789123456789" > 98秒
残念ながら、これだけはその条件を満たしてない
手計算で計算出来るレベルにまで計算量を減らせた
もちろん数学的な裏付け付きで
ある条件を見たせば一瞬で求まる
"123456789123456789" > 98秒
残念ながら、これだけはその条件を満たしてない
382デフォルトの名無しさん
2017/07/18(火) 06:37:17.84ID:nFCFlf58 >>381
22とか2323もその条件を満たしてない感じ?
22とか2323もその条件を満たしてない感じ?
383デフォルトの名無しさん
2017/07/18(火) 07:37:05.09ID:Ew0RSScO 22 は微妙
2323 は大丈夫
2323 は大丈夫
384デフォルトの名無しさん
2017/07/18(火) 07:41:44.22ID:Ew0RSScO まだコードになってないんで、
コードになったらアップします
寿司を食べる時間 < レーンの回転周期
という前提をつけちゃおうと思ったけど、
つけない方が良さそうですね
寿司を食べる時間がレーンの回転周期の整数倍の寿司は
ちょっと特別な処理が必要
コードになったらアップします
寿司を食べる時間 < レーンの回転周期
という前提をつけちゃおうと思ったけど、
つけない方が良さそうですね
寿司を食べる時間がレーンの回転周期の整数倍の寿司は
ちょっと特別な処理が必要
385デフォルトの名無しさん
2017/07/18(火) 08:01:32.43ID:Ew0RSScO 整数倍の寿司が無いもので
条件に当てはまらない最小は
2222
かな
条件に当てはまらない最小は
2222
かな
386デフォルトの名無しさん
2017/07/18(火) 08:49:51.93ID:YLlwVFMJ388デフォルトの名無しさん
2017/07/19(水) 18:12:29.37ID:Np9hKHT2 >>296
>>373
http://ideone.com/B9vl8l
C++。結局、i7-6700のmem2G使って7分で解けた。
どうしようもない位遅いな。
でも一応題意には添えたと思う。
もう見たくない・・・。Orz
高速化するにはインラインアセンブリ使うか、スレッド分割できるようなアルゴリズムかんがえるか。
よくわからんけど、数学で頑張ってる人に期待だ。
>>373
http://ideone.com/B9vl8l
C++。結局、i7-6700のmem2G使って7分で解けた。
どうしようもない位遅いな。
でも一応題意には添えたと思う。
もう見たくない・・・。Orz
高速化するにはインラインアセンブリ使うか、スレッド分割できるようなアルゴリズムかんがえるか。
よくわからんけど、数学で頑張ってる人に期待だ。
389386
2017/07/20(木) 01:57:16.81ID:Q7XnESC/ 100のべき乗に変更
ttp://sagecell.sagemath.org/?q=mciykc
ttp://sagecell.sagemath.org/?q=mciykc
390デフォルトの名無しさん
2017/07/21(金) 15:21:18.13ID:7e+pM3K/ >>296
http://ideone.com/mXPglY
C++。試しに再起化してみたら処理速度倍になった。
自分の環境では3分ちょいで解ける。
相変わらずメモリ馬鹿食いするけど。
もう俺には無理。
俺の中では終了でーす。Orz
http://ideone.com/mXPglY
C++。試しに再起化してみたら処理速度倍になった。
自分の環境では3分ちょいで解ける。
相変わらずメモリ馬鹿食いするけど。
もう俺には無理。
俺の中では終了でーす。Orz
391デフォルトの名無しさん
2017/07/22(土) 08:54:36.28ID:OQXA8cUK392デフォルトの名無しさん
2017/07/22(土) 08:55:28.19ID:OQXA8cUK このスレが無くならないうちに解明します
393デフォルトの名無しさん
2017/07/22(土) 10:43:30.03ID:apsnR2Z0394デフォルトの名無しさん
2017/07/23(日) 11:26:56.94ID:ipiEUPYV >>375
のほかの実装はでてこないねぇ‥
のほかの実装はでてこないねぇ‥
395デフォルトの名無しさん
2017/07/23(日) 12:53:55.68ID:7fREas1L >>394
使えるコードにするためには、規模がでかくなりすぎるから
使えるコードにするためには、規模がでかくなりすぎるから
396デフォルトの名無しさん
2017/07/23(日) 14:15:20.13ID:ipiEUPYV C/C++ で最長1000行ぐらいとみて、2日ぐらいあれば、とりあえず動く
土日で仕上がってくるんじゃないかと期待してたんだが
土日で仕上がってくるんじゃないかと期待してたんだが
397デフォルトの名無しさん
2017/07/23(日) 14:18:11.58ID:7fREas1L 速度が考えられてないコードなんて実用にはならないよ
398デフォルトの名無しさん
2017/07/23(日) 14:21:31.79ID:7fREas1L ていうか、
コードに対する条件とか
サポートする機能とか
条件が無さすぎる
コードに対する条件とか
サポートする機能とか
条件が無さすぎる
399デフォルトの名無しさん
2017/07/23(日) 14:24:57.75ID:ipiEUPYV 速度‥か‥
どうしてもローテートとかキャリーフラグとかを使いたいから、これはアセンブラの領域になるね
よくみかけるアセンブラ中毒者が今頃爪を研いでいるのだろうか?
どうしてもローテートとかキャリーフラグとかを使いたいから、これはアセンブラの領域になるね
よくみかけるアセンブラ中毒者が今頃爪を研いでいるのだろうか?
400デフォルトの名無しさん
2017/07/23(日) 14:25:42.29ID:ipiEUPYV >>398
そこは「自分用」だから自由に決めていいんでないかい?
そこは「自分用」だから自由に決めていいんでないかい?
401デフォルトの名無しさん
2017/07/23(日) 14:49:34.77ID:TcY6qE9r402デフォルトの名無しさん
2017/07/23(日) 14:53:19.94ID:ipiEUPYV >>401
お題が違うのでは?
お題が違うのでは?
403デフォルトの名無しさん
2017/07/23(日) 15:05:28.62ID:TcY6qE9r >>402 >>394
確かに違った、すいません。
c++多倍長なら、karatsubaにも対応して300行くらいの以下をパクって使うのも一案
http://sites.google.com/site/indy256/algo_cpp/bigint
確かに違った、すいません。
c++多倍長なら、karatsubaにも対応して300行くらいの以下をパクって使うのも一案
http://sites.google.com/site/indy256/algo_cpp/bigint
404デフォルトの名無しさん
2017/07/23(日) 15:09:21.91ID:ipiEUPYV >>403
base 10進ならば、表示(operator<<) が楽でいいね、なるほど、それは思いつかなかった
base 10進ならば、表示(operator<<) が楽でいいね、なるほど、それは思いつかなかった
405デフォルトの名無しさん
2017/07/23(日) 16:51:44.88ID:7fREas1L406デフォルトの名無しさん
2017/07/23(日) 16:52:43.21ID:7fREas1L FFTのライブラリをどこからか持ってくるのでもいいけど、
それなら素直に多倍長ライブラリを持ってくれば
ってことになる
それなら素直に多倍長ライブラリを持ってくれば
ってことになる
407デフォルトの名無しさん
2017/07/23(日) 16:54:07.19ID:7fREas1L 今は浮動小数点演算が速いので、
カラツバの出番はあまりない
カラツバの出番はあまりない
408デフォルトの名無しさん
2017/07/23(日) 18:50:17.74ID:5CSy1R8t 基数を10のべき乗にするとか(printf()的なものが簡単だから)、乗算はunsigned shortやintとの
乗算に限るとか、除算無しとかいうのは…
プログラムの本体に組み込まれてしまって、再利用可能なライブラリの形で括りだされてる事の
方が少ないかw
乗算に限るとか、除算無しとかいうのは…
プログラムの本体に組み込まれてしまって、再利用可能なライブラリの形で括りだされてる事の
方が少ないかw
409デフォルトの名無しさん
2017/07/24(月) 00:48:44.80ID:XgJeE+LA >>6-285 SageMath
ttp://sagecell.sagemath.org/?q=veftjc
ttp://sagecell.sagemath.org/?q=veftjc
410デフォルトの名無しさん
2017/07/24(月) 18:24:00.06ID:UuUAOyUA >>408
裁定ラインとしては、乗算は Bigint×Bigint、および除算の実装ですかね、でも足し算の回数での乗算や引き算の回数での除算は嫌ですね
裁定ラインとしては、乗算は Bigint×Bigint、および除算の実装ですかね、でも足し算の回数での乗算や引き算の回数での除算は嫌ですね
411デフォルトの名無しさん
2017/07/24(月) 18:58:12.05ID:5ve8i6tz412デフォルトの名無しさん
2017/07/24(月) 19:10:35.21ID:nJVItCRy >>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)]
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)]
413デフォルトの名無しさん
2017/07/24(月) 19:11:05.16ID:7nQ6Z7f9 >>296
超高速版が出来ました!
http://ideone.com/FrRkof
一皿9秒が上限であれば、計算オーダーはn
関数自体は何秒でも大丈夫です
コードだけじゃ意味がわからないでしょうけど、とりあえずコードだけ
あまりテストしてないので、バグってたらごめんなさい
超高速版が出来ました!
http://ideone.com/FrRkof
一皿9秒が上限であれば、計算オーダーはn
関数自体は何秒でも大丈夫です
コードだけじゃ意味がわからないでしょうけど、とりあえずコードだけ
あまりテストしてないので、バグってたらごめんなさい
414デフォルトの名無しさん
2017/07/24(月) 23:00:47.69ID:fjGi9Yh0 オーダーnは凄いな
415デフォルトの名無しさん
2017/07/25(火) 05:40:32.49ID:ubbfnjuS416デフォルトの名無しさん
2017/07/25(火) 11:52:16.57ID:bLUUDw7G 回転寿しの問題は、部分的な最短経路が全体の最短経路にならないんだよな
だが最短時間はレーン長の2倍程度の再帰回数で出る
そのあと数十億回再帰して総当たりしてもそれより短くならない
最後の皿から逆方向に探索してもおそらく同じ状況
だが最短時間はレーン長の2倍程度の再帰回数で出る
そのあと数十億回再帰して総当たりしてもそれより短くならない
最後の皿から逆方向に探索してもおそらく同じ状況
417デフォルトの名無しさん
2017/07/25(火) 11:56:47.84ID:bLUUDw7G 例えば、”122” は最短時間6だが、1周目で2番目の要素”2”をパスしないとそうならない
418411
2017/07/26(水) 19:54:35.63ID:6H34MdHA419デフォルトの名無しさん
2017/07/26(水) 20:50:49.45ID:s8dUUqTb420デフォルトの名無しさん
2017/07/26(水) 20:52:34.29ID:s8dUUqTb と思ったら見れました
ファレイ数列を使って何かを解くわけじゃなくて、
ファレイ数列を求める問題?
ファレイ数列を使って何かを解くわけじゃなくて、
ファレイ数列を求める問題?
421411
2017/07/26(水) 23:20:07.89ID:6H34MdHA422デフォルトの名無しさん
2017/07/26(水) 23:26:01.52ID:lPM9zwS7 #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;
}
#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;
}
423デフォルトの名無しさん
2017/07/26(水) 23:29:22.49ID:lPM9zwS7 これから0と1を除けば良いって問題であれば、
表示のループに以下を加えれば
if (i->den != 1)
表示のループに以下を加えれば
if (i->den != 1)
424デフォルトの名無しさん
2017/07/26(水) 23:31:57.11ID:lPM9zwS7425412
2017/07/27(木) 00:12:38.86ID:qteH6K3e そもそも>>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)]
んでもって再帰にすると>>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)]
426デフォルトの名無しさん
2017/07/27(木) 01:59:46.61ID:GuEy9AL1427デフォルトの名無しさん
2017/07/28(金) 18:51:16.80ID:XBSdfIgC >>375
のほかの実装はでてこないねぇ‥
のほかの実装はでてこないねぇ‥
428デフォルトの名無しさん
2017/07/28(金) 19:19:26.77ID:mqZJq6H+ 昔brainf**kで実装したのあるけどちょっとなぁ
429デフォルトの名無しさん
2017/07/28(金) 19:24:55.65ID:WViVOgsq また懐かしい言語を
430デフォルトの名無しさん
2017/07/28(金) 19:26:36.86ID:WViVOgsq どうせならチューリングマシンで作ってよ
431デフォルトの名無しさん
2017/07/30(日) 10:59:37.37ID:A7gIx2b1 お題:MathematicaのFareySequence[n,k](引数2つ)に相当するものの実装
ttp://reference.wolfram.com/language/ref/FareySequence.html
ttp://reference.wolfram.com/language/ref/FareySequence.html
432デフォルトの名無しさん
2017/07/30(日) 11:53:03.31ID:EQKnHSgY■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国と対話で良い関係つくるのが責任と首相 [少考さん★]
- 中国と対話で良い関係つくるのが責任と首相 ★2 [少考さん★]
- 参政党、梅村みずほ参院議員を党ボードメンバーから解任 参議院国会対策委員長の役職も外れる [少考さん★]
- 日本テレビ、国分太一の会見受け回答「『コンプライアンス違反行為があった』ということ以上に公にできない」「答え合わせ難しい」 [Ailuropoda melanoleuca★]
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に ★2 [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★3 [Ailuropoda melanoleuca★]
- 【悲報】高市、答弁修正。バカウヨ敗北wwwwwwwwww [834922174]
- 中国の極超音速ミサイル、名古屋に照準か 高市さん助けて [399259198]
- 【速報】高市「日本はサンフランシスコ平和条約で台湾に関する全ての権利と権限を放棄している。台湾の法的地位や認定する立場ではない」 [931948549]
- 立川志らく「高市政権に逆らったら全部日本人じゃねえなんて言ってない」 [931948549]
- 【画像】高市円安寿司 [667744927]
- 【悲報】「ジャングリア沖縄」、開業3ヶ月目にしてガラガラになってしまうwwwwwwwwwwwwwwwwwww [839150984]
