[過去ログ]
プログラミングのお題スレ Part13 (1002レス)
プログラミングのお題スレ Part13 http://mevius.5ch.net/test/read.cgi/tech/1549160513/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん [] 2019/02/03(日) 11:21:53.20 ID:72eosYJ+ プログラミングのお題スレです。 【出題と回答例】 1 名前:デフォルトの名無しさん お題:お題本文 2 名前:デフォルトの名無しさん >>1 使用言語 回答本文 結果がある場合はそれも 【ソースコードが長くなったら】 (オンラインでコードを実行できる) https://ideone.com/ http://codepad.org/ http://compileonline.com/ http://rextester.com/runcode https://runnable.com/ https://code.hackerearth.com/ http://melpon.org/wandbox https://paiza.io/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ https://mevius.2ch.net/test/read.cgi/tech/1538096947/ http://mevius.5ch.net/test/read.cgi/tech/1549160513/1
2: デフォルトの名無しさん [sage] 2019/02/03(日) 11:24:10.97 ID:72eosYJ+ お題1: 現在地の緯度、経度を出せ 緯度:、、、、 経度:、、、、 お題2: 東京都新宿区西新宿2丁目8-1 の緯度、経度を出せ 緯度:、、、 経度:、、、 お題3: お題2で求めた緯度経度から住所を出せ 郵便番号:、、、 住所:東京都、、、、 http://mevius.5ch.net/test/read.cgi/tech/1549160513/2
3: デフォルトの名無しさん [sage] 2019/02/03(日) 11:36:46.42 ID:72eosYJ+ >>2 python (pythonista) #お題1 import location location.start_updates() # GPSデータ更新を開始 gps=location.get_location() # GPSデータを取得する location.stop_updates()# GPSデータ更新を終了 print('お題1') print('緯度:'+str(gps['latitude'])) print('経度:'+str(gps['longitude'])) #お題2 address_dict = {'Street': '西新宿2丁目8-1'} gc = location.geocode(address_dict)[0] print('お題2') print('緯度:'+str(gc['latitude'])) print('経度:'+str(gc['longitude'])) #お題3 adr = location.reverse_geocode(gc)[0] #print(adr) print('お題3') print('郵便番号:'+str(adr['ZIP'])) print('住所:'+str(adr['State'])+str(adr['City']) +str(adr['Street'])) #結果 お題1 緯度:35.7----略 経度:139.6---略 お題2 緯度:35.689504 経度:139.6916833 お題3 郵便番号:160-0023 住所:東京都新宿区西新宿2丁目8番1号 http://mevius.5ch.net/test/read.cgi/tech/1549160513/3
4: デフォルトの名無しさん [] 2019/02/03(日) 13:16:33.45 ID:jFMT64Yy 平方数の判定は、たとえばmod 10だと、 1と4と5と6と9に限るってのを利用すると、違う場合は判定が速いんだろ。 mod n で複数やる。 1=1^2 4=2^2 9=3^2 6=4^2 5=5^2 6=6^2 9=7^2 4=8^2 1=9^2 http://mevius.5ch.net/test/read.cgi/tech/1549160513/4
5: デフォルトの名無しさん [] 2019/02/03(日) 17:42:03.97 ID:oUppVF8S >>1 乙 http://mevius.5ch.net/test/read.cgi/tech/1549160513/5
6: デフォルトの名無しさん [] 2019/02/03(日) 18:09:22.12 ID:I0qputsI >>4 平方根求められる関数と、少数を整数にする関数があれ http://mevius.5ch.net/test/read.cgi/tech/1549160513/6
7: デフォルトの名無しさん [] 2019/02/03(日) 18:10:24.69 ID:I0qputsI 途中で送っちゃった。。。 あれば簡単。 def isSqr(x): if sqrt(x) - int(sqrt(x)) == 0: return True else: return False def sqrt(x): return (x ** 0.5) http://mevius.5ch.net/test/read.cgi/tech/1549160513/7
8: デフォルトの名無しさん [sage] 2019/02/03(日) 19:44:56.44 ID:t6DUu8Hq >>7 ならば a=12345.678*12345.678 print('答え',a == (a**0.5) **2) #結果 True http://mevius.5ch.net/test/read.cgi/tech/1549160513/8
9: デフォルトの名無しさん [] 2019/02/03(日) 20:21:31.21 ID:jFMT64Yy たとえば1000桁のを1000回、判定するとかsqrtでは時間かかるやつの高速化だろ http://mevius.5ch.net/test/read.cgi/tech/1549160513/9
10: デフォルトの名無しさん [] 2019/02/03(日) 20:45:32.58 ID:I0qputsI >>8 なにが「ならば」か分からんけど。。。 引く必要なかったし、ifの中身をそのまま返せば良かった。 def isSqr(x): return (sqrt(x) == int(sqrt(x))) http://mevius.5ch.net/test/read.cgi/tech/1549160513/10
11: デフォルトの名無しさん [sage] 2019/02/03(日) 21:02:27.70 ID:Hf9VDUPT >>9 だったらそういう問題の出し方にしないと。 例えば、1から1億までの間の数字で平方根数は何個あるか。 かかった時間と、PC 環境を示せ また、処理できる最大に近い数字を示せ。 とかかな。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/11
12: デフォルトの名無しさん [sage] 2019/02/03(日) 21:37:11.53 ID:MY6f7I+S なんか変なのいるね http://mevius.5ch.net/test/read.cgi/tech/1549160513/12
13: デフォルトの名無しさん [sage] 2019/02/03(日) 21:40:28.27 ID:v4AFDwkt 浮動小数経由する実装だと整数部が53bit超えると判定出来ない(つまり64bit整数以上だと不適切) だから自前で浮動小数を経由せずに平方根の整数部分を求めることを考えるわけだけどナイーブにやると計算量が線型になるから二分探索やNewton(-Raphson)法で計算量減らすことを考えるわけだ http://mevius.5ch.net/test/read.cgi/tech/1549160513/13
14: デフォルトの名無しさん [] 2019/02/03(日) 22:02:19.65 ID:I0qputsI >>13 >>7で64ビット以上の数も判定出来てるけど。。。 (0が偶数ならTrue、奇数ならFalse) 小数点以下が0か(n.0かn.41421356みたいな形か)どうか見てるだけだし。 この辺はsqrt関数の性能に依存するだろうけど。 n = 100000000000000000000 m = 10000000000000000000 print(isSqr(n)) print(isSqr(m)) 出力 True False http://mevius.5ch.net/test/read.cgi/tech/1549160513/14
15: デフォルトの名無しさん [sage] 2019/02/03(日) 23:09:07.55 ID:CD+d7Abc >>14 100000000000000000001がtrueになったりはしない? http://mevius.5ch.net/test/read.cgi/tech/1549160513/15
16: デフォルトの名無しさん [sage] 2019/02/03(日) 23:21:43.21 ID:CD+d7Abc >>14 https://ideone.com/IntAcn http://mevius.5ch.net/test/read.cgi/tech/1549160513/16
17: デフォルトの名無しさん [sage] 2019/02/03(日) 23:32:49.30 ID:J7OBWIJA >>14 何言ってんのおまえ http://mevius.5ch.net/test/read.cgi/tech/1549160513/17
18: デフォルトの名無しさん [sage] 2019/02/03(日) 23:38:52.32 ID:v4AFDwkt >>14 無能 たまたま判定出来るケースだけ抽出してるだけじゃねぇか http://mevius.5ch.net/test/read.cgi/tech/1549160513/18
19: デフォルトの名無しさん [] 2019/02/03(日) 23:57:14.35 ID:Hf9VDUPT >>13 それもわかる。 だったら解き方の最初にこういう目的で解いたとか書かないとね。 だから、解ける最大数値も書いたら良いと書いたんだが。 ちなみに、>>1 の1億までの数字は、iPhoneで28秒だった。 >>15 False になるよ。iphone のpythonista また、言われたようにバイナリサーチ法や、巨大数のバイナリー検索も試してみたが、単純検索よりずっと時間がかかった。 ま、これは言語にもよると思うから何とも言えないが。 スクリプト系はステップ数が短い方が効率は良さそうだな。 >>18 だからさ、どこまでやるか条件を出せよ。 そしてサンプルを示してみたら? 実行時間も入れて。 プログラムと言うのは、使う現場で目的が違うんだから目的がわからなければ良い悪いなんて言えないだろ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/19
20: デフォルトの名無しさん [sage] 2019/02/04(月) 01:09:58.80 ID:tmXRmKR0 このお客さんはどこから来たんだ http://mevius.5ch.net/test/read.cgi/tech/1549160513/20
21: デフォルトの名無しさん [sage] 2019/02/04(月) 01:42:54.31 ID:8qZo3rbs アホ過ぎて話になんねー 線型探索と二分探索のどっちが速いかが言語によるとか頭腐ってんのか 線型探索: ttps://ideone.com/De3SOQ 二分探索: ttps://ideone.com/v9Twjx http://mevius.5ch.net/test/read.cgi/tech/1549160513/21
22: デフォルトの名無しさん [] 2019/02/04(月) 06:56:02.27 ID:eX/1kX5o >>19 寝てる間にフォローありがとう。 >>15 こっちはiPhoneのモバイルC内蔵のPythonだが、trueなった。 Haskellは63ビットだからかもう少し早い段階でなる。 ただ、>>19 の言う通り実用上問題無いのでは。 (階乗と違って入力より巨大な数が帰るわけじゃないし、Cとかだと十分実用かと) 64ビットまでの数では効率的なバージョンと、それ以上の数も対応するバージョンという感じではどうか。 sqrtも、n乗根は似た作りになるし。 # n√x def sqrtn(n,x): return (x ** (1/n)) http://mevius.5ch.net/test/read.cgi/tech/1549160513/22
23: デフォルトの名無しさん [] 2019/02/04(月) 07:03:50.35 ID:eX/1kX5o どちらかと言うと**演算子(Cで言うpower関数)の実装に興味あるな。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/23
24: デフォルトの名無しさん [sage] 2019/02/04(月) 07:23:18.46 ID:958Z8DnZ CRC 16bit 左送り 初期値 0x0000 生成多項式0x11021 テーブル使用せず演算でなるべくスマートに http://mevius.5ch.net/test/read.cgi/tech/1549160513/24
25: デフォルトの名無しさん [] 2019/02/04(月) 08:07:18.20 ID:jp+X9sqK 指数関数,正弦関数,余弦関数のベキ級数展開(マクローリン展開) http://www.synchronature.com/Science/Resources/e-s-c.jpg http://www.synchronature.com/Science/Euler.html http://mevius.5ch.net/test/read.cgi/tech/1549160513/25
26: デフォルトの名無しさん [sage] 2019/02/04(月) 10:14:05.68 ID:AyF9PYpz 平方数 64ビット以上の巨大数 pythonista iPhone XS Max def chk2(v1,v2): c = 0 for i in range(v1, v2+1): if i == (i**0.5) **2: c += 1 return c v = 100000000000000000000 r = 10000000 v1= v-r v2= v+r start_time=time.clock() c = chk2(v1,v2) end_time=time.clock() print('#結果',end_time-start_time,'秒','count=',c) print('#範囲 ',v1,v2) #結果 5.777779999999893 秒 count= 525 #範囲 99999999999990000000 100000000000010000000 http://mevius.5ch.net/test/read.cgi/tech/1549160513/26
27: デフォルトの名無しさん [sage] 2019/02/04(月) 10:28:47.91 ID:AyF9PYpz >>26 同じ条件でバイナリサーチをやってみると若干だけ早かったが、誤差の範囲 #結果 5.770102000000406 秒 count= 525 #範囲 99999999999990000000 100000000000010000000 http://mevius.5ch.net/test/read.cgi/tech/1549160513/27
28: デフォルトの名無しさん [sage] 2019/02/04(月) 11:40:45.86 ID:GcH+yasd >>26-27 99,999,999,999,990,000,000~100,000,000,000,010,000,000の範囲には10,000,000,000しかないんだからcount=525ってのは演算誤差が出てるってことだよな? 99,999,999,980,000,000,001 (9,999,999,999^2) 100,000,000,020,000,000,001 (10,000,000,001^2) http://mevius.5ch.net/test/read.cgi/tech/1549160513/28
29: デフォルトの名無しさん [sage] 2019/02/04(月) 11:43:01.09 ID:GcH+yasd いや、intにしてないからそれを調べてるってわけじゃないのか http://mevius.5ch.net/test/read.cgi/tech/1549160513/29
30: デフォルトの名無しさん [sage] 2019/02/04(月) 14:12:20.36 ID:NdPuZxEw >>28 言われてみればフロートまでカウントするのはおかしいから判定を変えた。 for i in range(v1, v2+1): if (i**0.5).is_integer(): c += 1 return c Core i3 3.2GHz Windows10 python3.7 #結果 8.15625 秒 count= 49151 #範囲 99999999999990000000 100000000000010000000 iPhoneの方が倍くらい早いかな。 #結果 4.180858 秒 count= 49151 Core i7のマシンもあるが大して期待できなさそうだな。 検算の意味で、1から1000までをカウントして31だったから正しいだろう。 なお、Python3の整数int型に最大値はない(上限なし)からどんな数でも扱える。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/30
31: デフォルトの名無しさん [sage] 2019/02/04(月) 14:13:11.15 ID:fIIhQCXR もういいからお前 http://mevius.5ch.net/test/read.cgi/tech/1549160513/31
32: デフォルトの名無しさん [sage] 2019/02/04(月) 14:20:39.50 ID:GcH+yasd >>30 いや、誤差出てるやん http://mevius.5ch.net/test/read.cgi/tech/1549160513/32
33: デフォルトの名無しさん [sage] 2019/02/04(月) 14:55:46.83 ID:GcH+yasd >>30 これ(count=49151)って99999999999999975424から100000000000000024575 (64bit浮動小数点数の16進表記で0x4415AF1D78B58C3Fから0x4415AF1D78B58C41)の平方根が、 10000000000 (64bit浮動小数点数の16進表記で0x4202A05F20000000)になって全部Trueになってるってことだろ http://mevius.5ch.net/test/read.cgi/tech/1549160513/33
34: デフォルトの名無しさん [sage] 2019/02/04(月) 15:39:51.36 ID:8qZo3rbs 99,999,999,980,000,000,001 = 999,999,999^2 100,000,000,000,000,000,000 = 10,000,000,000^2 100,000,000,020,000,000,001 = 10,000,000,001^2 なんだから[99'999'999'999'990'000'000, 100'000'000'000'010'000'000]の区間に入る平方数はただ一つ100,000,000,000,000,000,000しかない 「32bit符号なし整数にしか対応してません」っつうなら分かるがまともに判定出来てないのに「判定出来てる」主張する無能 やれ前提書けだの環境書けだの時間書けだのクソみてぇな御託並べる前に自分の頭の悪さを自覚しろ http://mevius.5ch.net/test/read.cgi/tech/1549160513/34
35: デフォルトの名無しさん [sage] 2019/02/04(月) 18:19:40.08 ID:TMO26aZK >>34 申し訳ない。 2〜3日前にpython をiPhoneに入れて使い始めてただただ練習のためにお題を使わせてもらってた。 整数と、浮動小数の最大値にまで頭が回らなかった。 今日初めてWindowsにpythonを入れた状態で本当に気が回らなかった。 本当に申し訳ない。 バイナリサーチの方は1個と出るが、時間が膨大にかかる。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/35
36: デフォルトの名無しさん [] 2019/02/04(月) 20:37:21.99 ID:WZY4HG/d 自然数の割り算関数mydivと余り関数mymodを作れ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/36
37: ◆QZaw55cn4c [sage] 2019/02/04(月) 20:41:26.02 ID:CLpqTC7n >>36 C++ 多桁長演算(加減乗除)の一環として、mpz_class との互換を目指していました https://mevius.5ch.net/test/read.cgi/tech/1434079972/51 http://mevius.5ch.net/test/read.cgi/tech/1549160513/37
38: デフォルトの名無しさん [sage] 2019/02/04(月) 20:50:12.06 ID:Ly7rB5Pz >>36 これでいいの?javascript const myDiv = (a, b) => ~~(a / b) const myMod = (a, b) => a % b http://mevius.5ch.net/test/read.cgi/tech/1549160513/38
39: デフォルトの名無しさん [] 2019/02/04(月) 21:00:40.83 ID:mK0I6q3a modをみる nが平方数なら、n=x^2 だが、n=x^2 (mod m)でもある 逆にmod で平方数でなければ、元々も平方数ではない mod 3だと0 1 は平方数だが、2はちがう。3i + 2 は平方数にはならない http://mevius.5ch.net/test/read.cgi/tech/1549160513/39
40: デフォルトの名無しさん [] 2019/02/04(月) 22:02:57.78 ID:eX/1kX5o >>38 元は小学生にプログラミングを通じて、割り算への理解を深めてもらえないかと考えたんで、単純に演算子を置き換えて欲しくないかも。。。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/40
41: デフォルトの名無しさん [] 2019/02/05(火) 10:18:54.39 ID:ij/1zyvC 小学生の時テストで0点をもらった間違った割り算の やり方をプログラムにしてみた。 --Lua function myDivMod(a, b) local r = 0 while a > 0 do a = a - b r = r + 1 end return r, -a end print(myDivMod(10,3)) 実行結果 4 2 http://mevius.5ch.net/test/read.cgi/tech/1549160513/41
42: デフォルトの名無しさん [sage] 2019/02/05(火) 12:28:40.98 ID:aE6b0ZPr >>35 結局 整数のsqrt を作って、範囲の中に納まる最小最大の整数のsqrt を取り出し、その差(+1)がその範囲の中にある平方数の個数と言う作りにした。 ポイントとなった整数のsqrt が秀逸だったのでここに書いておく。 どんなに巨大な数字でも数回のシフト操作だけで終わるから極端にスピードが速い。 ソースは、gist.github.com/bnlucas/5879594 # integer square root def isqrt_2(n): if n < 0: raise ValueError('Square root is not defined for negative numbers.') x = int(n) if x == 0: return 0 a, b = divmod(x.bit_length(), 2) #divmod(a, b)は(a // b, a % b)のタプルを返す。 #平方数は半分のビット数以下だからそれを最大値で計算開始 n = 2 ** (a + b) while True: y = (n + x // n) >> 1 #1bit右にシフト if y >= n: return n n = y ----------------- #結果 0.0 秒 count= 1000000000 #範囲 999999999000000000000000000000000000 1000000001000000000000000000000000000 #入力bit_length()=120 入力bit_length()=120 平方数範囲 999999999500000000 1000000000499999999 上の二乗 999999999000000000250000000000000000 1000000000999999998249999999000000001 http://mevius.5ch.net/test/read.cgi/tech/1549160513/42
43: デフォルトの名無しさん [] 2019/02/05(火) 12:33:09.36 ID:NCwCR2JI >>41 おしいなw http://mevius.5ch.net/test/read.cgi/tech/1549160513/43
44: デフォルトの名無しさん [sage] 2019/02/05(火) 13:45:18.58 ID:jFne2R1T 掛け算は簡単だけど除算は結構面倒 ttps://ideone.com/EheeYM http://mevius.5ch.net/test/read.cgi/tech/1549160513/44
45: デフォルトの名無しさん [sage] 2019/02/05(火) 18:45:08.63 ID:63VtM8MC >>42 の isqrt_2 を使ったパフォーマンステスト。 次のようなのを継ぎ足してテストした。 例によってインデント部は全角空白に変換してるから、逆変換しないと動かない。 def isSqrt(n): return n == isqrt_2(n)**2 v0 = 12345678901234567890 v = v0**2 # 整数平方される対象の数値 loopc = 100000 # をこの回数繰り返す。 isqr=0 start =time.process_time() for i in range(loopc): isqr=isqrt_2(v) end =time.process_time() print('#整数平方(v)の結果',end-start,'秒') print(' 繰返し数の回数',loopc),print(),print('#v0 ',v0) print('#v=v0**2=',v), print('#isqrt(v)',isqr) print('#上の**2',isqr**2) print('対象数vのビット数',v.bit_length(),'bit') print('vが平方数かどうかの判定',isSqrt(v)) ----- #整数平方(v)の結果 0.22398700000002236 秒 繰返し数の回数 100000 #v0 12345678901234567890 #v=v0**2= 152415787532388367501905199875019052100 #isqrt(v) 12345678901234567890 #上の**2 152415787532388367501905199875019052100 対象数vのビット数 127 bit vが平方数かどうかの判定 True http://mevius.5ch.net/test/read.cgi/tech/1549160513/45
46: デフォルトの名無しさん [sage] 2019/02/06(水) 11:48:35.22 ID:Cmz9AyOj >>45 同じ条件で2分探索法でやると 5.5秒かかった。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/46
47: デフォルトの名無しさん [sage] 2019/02/06(水) 16:53:02.43 ID:XOfzhWu4 Wikipediaに Integer square root https://en.wikipedia.org/wiki/Integer_square_root があり、その中の 2.1 Using bitwise operations の二つを試してみたが、 最初のrecursive call を使った方が 1.65秒 次の方が 2.05秒 早いことは早いが、>>42 >>45 のビットシフト法の方がかなり早い。 0.22秒 gmpのisqrt は早そうだが Pythonistaでは使えないので試していない。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/47
48: デフォルトの名無しさん [sage] 2019/02/09(土) 01:16:57.63 ID:VrkeVQvn >>4 そう言う記述を度々見るんだが、具体的なプログラムを提示してくれない? http://mevius.5ch.net/test/read.cgi/tech/1549160513/48
49: デフォルトの名無しさん [sage] 2019/02/09(土) 05:46:19.68 ID:ZuP9aKcb >>48 前スレでもGMPだって紹介されてたし https://gmplib.org/manual/Perfect-Square-Algorithm.html https://gmplib.org/repo/gmp/file/tip/mpn/generic/perfsqr.c 実際に使われる法はビルド時生成(https://gmplib.org/repo/gmp/file/tip/gen-psqr.c)だけど大抵の32/64bitシステムの場合は書いてある通り http://mevius.5ch.net/test/read.cgi/tech/1549160513/49
50: デフォルトの名無しさん [] 2019/02/09(土) 06:52:32.52 ID:y7fm8J5o なんでも放題にすればいい お題 平方数は 256で割るとあまりの パターンが44種類になるという。 この44種類を求める。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/50
51: デフォルトの名無しさん [] 2019/02/09(土) 08:05:29.21 ID:y7fm8J5o 放題は、お題の間違い http://mevius.5ch.net/test/read.cgi/tech/1549160513/51
52: デフォルトの名無しさん [sage] 2019/02/09(土) 08:30:22.91 ID:IKLi4q/e python {(x**2) % 256 for x in range(0,256)} http://mevius.5ch.net/test/read.cgi/tech/1549160513/52
53: デフォルトの名無しさん [sage] 2019/02/09(土) 10:10:19.89 ID:DhY4ZB+P Ruby p 0x100.times.map{|i| i*i&0xFF}.uniq.sort # => [0, 1, 4, [...], 233, 241, 249] http://mevius.5ch.net/test/read.cgi/tech/1549160513/53
54: デフォルトの名無しさん [sage] 2019/02/09(土) 10:33:40.76 ID:O4yJeWlE javascript [...new Set(function*(){for(let i=0;i<256;i++)yield i*i%256}())].sort((a,b)=>a-b) http://mevius.5ch.net/test/read.cgi/tech/1549160513/54
55: デフォルトの名無しさん [] 2019/02/09(土) 14:20:17.67 ID:BaccQTUO お題:ハノイの塔の最少手数は一種類しかないのか http://mevius.5ch.net/test/read.cgi/tech/1549160513/55
56: デフォルトの名無しさん [sage] 2019/02/09(土) 14:22:34.94 ID:VrkeVQvn >>50 その44種(mod256)の中に x%256 が一致するか python mod256=sorted({(i**2)%256 for i in range(256)}) x=123*123 print(x%256 in mod256) # True これでmod の話が理解できた。 要は完全な平方数じゃないのは平方根の計算をしないと言う話ね。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/56
57: デフォルトの名無しさん [sage] 2019/02/09(土) 15:28:05.40 ID:1XyVHoA8 >>50 Perl5 %a = map{$_=>1} map{$_*$_%256} 0..256; @a = keys %a; print "@a\n"; 実行結果 ~ $ perl 13_50.pl | wc -w 44 $ perl 13_50.pl 137 89 161 57 1 4 100 17 36 49 121 64 68 144 201 177 65 185 16 9 193 169 129 105 196 132 25 73 249 209 33 233 225 97 41 81 241 164 145 228 217 0 153 113 http://mevius.5ch.net/test/read.cgi/tech/1549160513/57
58: デフォルトの名無しさん [sage] 2019/02/09(土) 17:42:33.15 ID:1XyVHoA8 >>50 Perl5 その2 use List::MoreUtils 'uniq'; @a = uniq map{$_*$_%256} 0..255; print "@a\n"; http://mevius.5ch.net/test/read.cgi/tech/1549160513/58
59: デフォルトの名無しさん [sage] 2019/02/09(土) 18:17:43.26 ID:HLblHrgV >>49 有難う。 python だが、 # 256, 9, 5, 7, 13, 17 97 のmodであらかじめカットしたら、5倍くらい早くなった。 因みに >>50 のお題で mod256=sorted({(i**2)%256 for i in range(256)}) と modn = lambda n:set((i**2)%n for i in range(n)) mod256 = modn(256) では下のsetを使った方が3割くらいスピードが速かった。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/59
60: デフォルトの名無しさん [sage] 2019/02/09(土) 18:57:59.38 ID:luPnpF49 >>59 # 256, 9, 5, 7, 13, 17 97 なんて順番ははおかしいんじゃねと思って、 大きい順にカットしたら、更に2割以上早くなった。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/60
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 942 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s