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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2018/09/28(金) 10:09:07.13 ID:phwOkayR.net]
プログラミングのお題スレです。

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

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

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

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

前スレ
プログラミングのお題スレ Part10
https://mevius.5ch.net/test/read.cgi/tech/1514772904/

プログラミングのお題スレ Part11
https://mevius.5ch.net/test/read.cgi/tech/1524570314/

297 名前:デフォルトの名無しさん [2018/11/09(金) 17:42:13.83 ID:SNvr5Euv.net]
>>269
『チンポ』については、自分でも良くわからない、何とも言えない不思議な生き物だ。

298 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 18:36:42.14 ID:B4AEy6G3.net]
お題
1以上N以下の奇数を並べた数の桁数を求めよ

3
=> 2 (13)

10
=> 5 (13579)

9999
=> 19445 (135...99979999)

123456789
=> ?

31415926535897
=> ?

299 名前:デフォルトの名無しさん [2018/11/09(金) 18:45:16.11 ID:DHGOZxva.net]
>>291
桁数というか奇数が何個かって話やね。
わざわざ分かりにくい仕様とか、コミュ障かと。

300 名前:デフォルトの名無しさん [2018/11/09(金) 18:47:33.93 ID:DHGOZxva.net]
ん、ああ。
10とか100とかになったら個数と桁数は違うか。
悪かった。

301 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:31:42.41 ID:myvceSEv.net]
お題
与えられた数を最小文字数で生成する。

302 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:36:37.28 ID:b84kY48J.net]
>>291 rust
https://ideone.com/Wl46o3

303 名前:デフォルトの名無しさん [2018/11/09(金) 19:38:13.95 ID:JsSTi+Gx.net]
>>294
問題の意味がわからん。何か例を書いてくれ。

304 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:45:38.08 ID:OW/zGENl.net]
意味のわからない日本語を解析する

305 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:46:38.02 ID:A6qAb8kp.net]
134217728 が与えられたら 8^9 を返すとかそういう話かね?



306 名前:デフォルトの名無しさん [2018/11/09(金) 19:46:54.75 ID:EUp1VEAA.net]
>>291
Haskell

main = mapM_ print $ zip3 lst fosl fos

oddstr [] = []
oddstr (x:xs) = show x:oddstr xs

fo = map (\x-> filter (odd) [1..x]) lst

foo f = map (f.concat.oddstr) fo

fos = foo id

fosl = foo length

lst = [3,10,999,123456789,31415926535897]

コードはすぐ出来たけど、計算が終わらないw
奇数が多すぎてバッファに残ってなさそうだから、ファイルにリダイレクトし直しかな。。。

307 名前:デフォルトの名無しさん [2018/11/09(金) 20:06:34.46 ID:JsSTi+Gx.net]
>>291
スマホから直接一度も試さずに書くが、Kotlin だと理屈の上ではこれでできると思う。
nが最大値な。

println((1..n step 2).joinToString("").length)

かといってこんなのメモリ食うだけ。

308 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 20:38:18.97 ID:Zs2FyImb.net]
>>291 Ruby

args = [0, 1, 2, 3, 10, 9999, 123456789, 31415926535897]

floor_log10 = -> n {r = 1; (0..n).find{ r *= 10; r > n}}
kotae = ->n{
x = floor_log10[n + 1]
((9*x - 1)*10**x + 10)/18 + (n-10**x+1)/2 * (x

309 名前: + 1) + (n < 8 ? n & 1 : 0)
}
args.each{|e| puts '%d => %d' % [e, kotae[e]]}
# =>
0 => 0
1 => 1
2 => 1
3 => 2
10 => 5
9999 => 19445
123456789 => 500000000
31415926535897 => 214355930195731
[]
[ここ壊れてます]

310 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 21:56:37.18 ID:lMSYlD+9.net]
>>301
なんで

311 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 21:58:02.15 ID:lMSYlD+9.net]
すまん。途中で誤爆した。
>>301
なんでこうなるの??
あと最後のn < 8 ? n & 1 : 0も数式で表わせる?

312 名前:デフォルトの名無しさん [2018/11/09(金) 22:05:09.74 ID:gJrymgLI.net]
>>291
Python3

print(len("".join(map(str, range(1, int(input())+1, 2)))))

を実行したらフリーズしたので

odd = range(1, int(input())+1, 2)
keta = 0
for i in odd:
keta += len(str(i))
print(keta)
#==============
123456789
=> 500000000
31415926535897
=> 終わらん

313 名前:デフォルトの名無しさん [2018/11/09(金) 22:09:18.25 ID:EUp1VEAA.net]
>>299
123456789の桁数は500000000ってのは分かった。

314 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 22:23:23.31 ID:PBoRuHnu.net]
>>303
0からnまでの奇数を並べてできる数の桁数をf(n)とすると(n >= 0)
p := [log10(n+1)] として n >= 10の時
f(n) = Σ[k は 0〜[(n-1)/2]]( (2k+1)の桁数 )
  = 1*(0〜9までの奇数の数) + 2*(10〜99までの奇数の数) + ...
+ p*(10^(p-1)〜10^p-1までの奇数の数) + (p+1)*(10^p〜nまでの奇数の数)
  = 1*5 + Σ[k は 2〜p]45k*10^(k-2) + (p+1)*[(n - 10^p + 1)/2]
  = 45/100*Σ[k は 1〜p]k*10^k + 1/2 + (p+1)*[(n - 10^p + 1)/2]
  = ((9p - 1)10^p + 1)/18 + 1/2 + (p+1)*[(n - 10^p + 1)/2]
  = ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] …… (*)
n = 0, 2, 4, 8, 9 の時はちょうど (*)
n = 1, 3, 5, 7 時は (*) + 1 なので
f(n) = ((9p - 1)10^p + 10)/18 + (p+1)*[(n - 10^p + 1)/2] + (n < 8 ? n & 1 : 0)
末尾の項を無理やり数式にしたいなら
[8/(n + 1)]((1 - (-1)^n)/2)(2^((5 - n)/2)([n/7] + 1))
とかにすればいいんじゃない意味ないけど

315 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 23:35:53.00 ID:QKOvQ/Be.net]
>>291 Squeak/Pharo Smalltalk

| fn |

fn := [:N |
| nDig |
nDig := N log truncated.
(1 to: nDig)
inject: (1 to: N by: 2) size * (nDig + 1)
into: [:tot :m | tot - ((10 raisedTo: m) / 2)]
].

#(3 10 9999 123456789 31415926535897) collect: fn

"=> #(2 5 19445 500000000 214355930195731) "



316 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 23:56:11.30 ID:EzT7HP1o.net]
>>306
訂正
((9p - 1)10^p + 10)/18 -> [((9p - 1)10^p + 10)/18]
あと (n < 8 ? n & 1 : 0) は (1 - (-1)^n)/2*[3/([√n] + 1)] の方がより簡単か

317 名前:デフォルトの名無しさん [2018/11/10(土) 01:35:04.59 ID:PYYpj2JU.net]
>>291
Kotlin
https://paiza.io/projects/KAd4jeHV7Q3ttrPaJCGFCw

318 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 04:32:40.14 ID:dp2CGyZQ.net]
>>309
すごい😆

319 名前:デフォルトの名無しさん [2018/11/10(土) 04:35:26.34 ID:PYYpj2JU.net]
>>262
Kotlin
https://paiza.io/projects/sjgIQuhZ44UZcdFZ2CwncQ

色々考えたが結局クラス作ってそこに数字列と文字列で切り分けて入れておいて比較時にそこ見るようにした。

入力の仕様は拡張されていて、最初に数字だけがあった場合はその後に続く単語がその個数あるとみなして
入力を行うが、最初に数字がない場合は無制限に読む。出力は入力した単語とソート後の単語を出す。

320 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 05:36:17.18 ID:zQnB+SVr.net]
提案
回答は言語別に別スレで

2スレ位になるかな?
評価価値基準で別れていくんじゃないかと

ここではコメントのみになるのかな。

321 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 05:52:45.45 ID:5gG2FCqG.net]
スレ過疎りそうだし誰もわざわざ別スレに回答見に行かなそう

322 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 06:43:43.85 ID:zQnB+SVr.net]
乱立して過疎ってる特定言語専用スレの活性化に寄与することを願いたいしコード例が増えることはそれぞれメリットあるんじゃないかと。
ここと相互リンクは必ず貼る。他の言語と比較しない
他を貶さないを基本ルールに。

323 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 07:08:4 ]
[ここ壊れてます]

324 名前:9.40 ID:mapNUhJU.net mailto: もとのスレにも迷惑かと []
[ここ壊れてます]

325 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 08:21:22.38 ID:2tLivqWS.net]
>乱立して過疎ってる特定言語

具体的に何?
一番肝心のこと言ってないから説得力がまるで無い



326 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 09:22:59.55 ID:dp2CGyZQ.net]
お題:
A,B,Cの3人が1から5までの値が1つずつ書かれた5枚のカードを使ってインディアンポーカーを行う。
各々ランダムに1枚カードを引き、自分は値を見ず他の参加者に値が見えるように額にかざす。
この状態でA,B,Cの順に自分の値が今回引かれた3枚の中で最大(MAX)か,2番目に大きい(MID)か,最小(MIN)かを予想して答える。
AとBはパスしてもよいものとし、誰かが答えた時点で終了となる。
なお全員必ず正解するものとする。
各々の引いたカードの値を引数にとり、一回分のインディアンポーカーの結果を出力する関数indian_poker(a, b, c)を実装せよ。

期待動作例:
indian_poker(3, 2, 1) // 「A is MAX」
indian_poker(5, 2, 4) // 「B is MIN」
indian_poker(4, 2, 3) // 「C is MID」

327 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 09:43:13.06 ID:9vqEahoA.net]
そのスレの流れを無視してよそのスレで出されたお題の答えだけ書かれても、そのスレの住人には邪魔なだけだと思う。

328 名前:デフォルトの名無しさん [2018/11/10(土) 09:56:28.53 ID:X2YiMm/N.net]
こういう指示語ばかり使うやつはだいたい頭悪い

329 名前:デフォルトの名無しさん [2018/11/10(土) 10:03:50.52 ID:0iGN/oEh.net]
>>317
マ板で見かけた入社試験過去問か。
プログラマー脱落者として辞退します。

330 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 10:10:03.22 ID:zQnB+SVr.net]
乱立して過疎ってる (特定言語専用(スレッド))
形容詞句?の係りはこれな

(こういうものの表しかたにも流儀が色々あって混在するとややこしい)

331 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 10:19:13.79 ID:2tLivqWS.net]
係り受けなんてどーでもいいよ
「特定言語」って具体的に何なんだ、って聞いてるだけじゃん
返答が『形容詞句?の係りはこれな』って人の話をわざと聞かない人間だろ
かなりのサイコパスなんで『乱立して過疎ってるスレ』とやらに誘いこんでマウンティングしたいだけじゃねえの
なぜなら、特定言語の具体的な名前を5時間経っても未だに出さない、
口を開いたかと思えば「係り受けはこうだから」
もう頭がおかしいだろこいつ

332 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 10:34:20.29 ID:zQnB+SVr.net]
一つの言語を話題の軸に置いたスレッドは幾らでもあるだろ?この板には。
過疎ってるのも伸びてるのも全部特定言語専用スレな

333 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 10:36:44.35 ID:zQnB+SVr.net]
コマンドプロンプトとかSQLとかでワイルドカード使ったことないのかな?

334 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 11:08:46.45 ID:1MT6N26R.net]
そもそもここが過疎だし、他スレなんかにここのコード書いても荒らしにしかならんので当然ながら反対
やりたい奴だけ勝手にやってろ

335 名前:デフォルトの名無しさん [2018/11/10(土) 11:14:10.79 ID:16GnFLu/.net]
>>317
一人が答えた時点で終了になるのに全員正解とは



336 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 11:20:45.22 ID:zQnB+SVr.net]
幾らなんでも既存スレ無許可で乗っ取るのはやめてほしい。
でも逆にそちらで希望された場合には別スレにしなくてもいいのでは?リンクさえあれば

337 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 11:31:50.87 ID:T2pc5qWv.net]
そもそも>>312の時点で日本語が怪しいですし

338 名前:デフォルトの名無しさん [2018/11/10(土) 11:33:27.18 ID:16GnFLu/.net]
>>317
答えた者が必ず正解するならAが常にあてずっぽうで正解できることになるな
パスする

339 名前:意味も無い

言わんとすることは推測できるが、問題文としては明らかにおかしい
各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
[]
[ここ壊れてます]

340 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 11:34:10.16 ID:g5G2TnXq.net]
>>317 Java
https://ideone.com/EUQiD6
これはひどいコードww

341 名前:デフォルトの名無しさん [2018/11/10(土) 11:36:49.05 ID:16GnFLu/.net]
>>330
ごり押しで草

342 名前:デフォルトの名無しさん [2018/11/10(土) 11:44:08.17 ID:16GnFLu/.net]
Aは常に正解する
Aは常に正しい
故にA is GOD

343 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 12:18:21.41 ID:2tLivqWS.net]
>>317は9月末あたりに話題になってた
ttps://qiita.com/gorillab/items/fab2a6637f681221f687
ttps://qiita-image-store.s3.amazonaws.com/0/169376/80ea2cf1-37e7-60b0-3230-c7dc1d2d60cc.jpeg

344 名前:デフォルトの名無しさん [2018/11/10(土) 12:38:22.96 ID:16GnFLu/.net]
>>333
元ネタからして雑すぎて草

345 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 12:44:49.01 ID:gks79eHH.net]
前スレ951のやつか



346 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 12:44:51.58 ID:xqriZsUd.net]
>>317 Ruby

def indian_poker(a, b, c)
  x = [Set[1, 2], Set[1, 5], Set[4, 5]]
  winner, winners_num = case
    when x.include?(Set[b, c]) then [?A, a]
    when a == 3 || (b == 3 && Set[a, b, c] != Set[2, 3, 4]) || x.include?(Set[a, c]) ||
      Set[b, c] == Set[2, 4] then [?B, b]
  else [?C, c]
  end
  '%s is %s' % [winner, %w[MIN MID MAX].zip([a, b, c].sort).find{|e| e.last == winners_num}.first]
end

arr = [*(1..5)].permutation(3){|i| puts '%p -> %s' % [i, indian_poker(*i)]};
# =>
[1, 2, 3] -> C is MAX
[1, 2, 4] -> B is MID
[1, 2, 5] -> B is MID
...
以下>>330と同じ

347 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:25:37.16 ID:hLxIIZfE.net]
>>329
> 各自、論理的に正解が絞りきれた場合のみ解答し、そうで無ければ必ずパスするものとする。又、その論理に誤りはないものとする。みたいな条件が必要
流石にその程度は理解しようよ…

348 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:27:54.99 ID:8cjk91S6.net]
>>291 python3
https://ideone.com/jQau8U
うーん… O(1)にできない

349 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:37:54.71 ID:16GnFLu/.net]
>>337
書いてないことは何でもあり

論理パズルにするならちゃんとルールは全て掲示しないと駄目

350 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:52:54.08 ID:9b5VuL4P.net]
お題
n^n^nの下2桁を求めよ(^はべき乗、nは1以上の整数)

1 => 1
2 => 16 (2^2^2 = 2^4 = 16)
3 => 87 (3^3^3 = 3^27 = 7625597484987)
4 => 96
11 => 11
13 => 53
100 => 0
777 => ??

351 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 14:00:49.74 ID:hLxIIZfE.net]
>>339
はいはい w
アスペかよ

352 名前:デフォルトの名無しさん [2018/11/10(土) 15:46:45.95 ID:16GnFLu/.net]
>>340
777の出力は77になればいいのかな?
その入力でこうなるの面白いな

353 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 15:58:06.48 ID:xqriZsUd.net]
>>342
97じゃない?

354 名前:デフォルトの名無しさん [2018/11/10(土) 16:06:41.30 ID:16GnFLu/.net]
>>343
すまんコード修正したら97になったわ
はやとちりだった

355 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 16:28:23.31 ID:31tiZVqm.net]
>>330-331
そういうのはそれよりマシなコードを出してから言わないと単なる口先番長にしか見えないぞw



356 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 17:09:13.33 ID:xqriZsUd.net]
>>340 Ruby
def powmod(n, e, m)
  case e
  when 0 then 1
  when :even?.to_proc then powmod(n * n % m, e >> 1, m)
  else n * powmod(n, e - 1, m) % m
  end
end

def kotae(n, m)
  index, cycle = (1..m).each_wit

357 名前:h_object([1]) do |i, a|
    x = (a.last * n % m)
    ind = a.index(x)
    ind.nil? ? a.push(x) : (break([ind, i - ind]))
  end
  x = n.times.reduce(1){|r, i| r *= n; r < index ? r : break}
  y = x.nil? ? index + (powmod(n, n, cycle) - index) % cycle : x
  powmod(n, y, m)
end

[0, 1, 2, 3, 4, 5, 10, 11, 13, 100, 777].each{|i| puts '%d -> %06d' % [i, kotae(i, 10**6)]}
# =>0 -> 000000
1 -> 000001
2 -> 000016
3 -> 484987
4 -> 084096
5 -> 203125
10 -> 000000
11 -> 906611
13 -> 549053
100 -> 000000
777 -> 977097
[]
[ここ壊れてます]

358 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 17:30:26.21 ID:g5G2TnXq.net]
>>345
自分で書いて自分でひどいコードと言うとるんやがww

359 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 17:52:39.10 ID:AvCW4uHY.net]
python

def ans(num):
_def calc(N):
__n = (N ** 2) % 100
__p = []
__while n not in p:
___p.append(n)
___n = (n * N) % 100
__return p

_loop = calc(num)
_step = num**num % len(loop)
_if len(loop) == 1:
__print(loop[0])
_else:
__print(loop[step-2])

for x in [0,1,2,3,4,5,10,11,13,777]:
_ans(x)

-> 0,1,16,87,96,25,0,11,53,97

360 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 17:55:30.82 ID:hLxIIZfE.net]
>>347
ああ、それはすまん
俺もパッと書けと言われたらこれしか思いつかんわ

361 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 19:50:00.93 ID:nd1h6x9x.net]
>>347
わかった上で愚直にごり押しコード書いただけだよな
引数順列の列挙もドストレートで素敵w

362 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 20:50:56.73 ID:G7iMNc/F.net]
>>317 Squeak/Pharo Smalltalk

| numOfCards indianPoker |
numOfCards := 5.
indianPoker := [:args |
| cards names infer |
cards := (1 to: numOfCards) asArray.
names := (Character alphabet asUppercase first: args size) asArray collect: #asSymbol.
infer := nil. (infer := [:dealts :limit |
| turn possibilities lastAns answers |
turn := 0. answers := OrderedCollection new.
possibilities := dealts collect: [:dealt | cards asSet removeAll: dealts; add: dealt; yourself].
lastAns := nil -> #?.
[lastAns value = #? and: [(turn := turn + 1) < limit]] whileTrue: [
| myCards others |
myCards := possibilities atWrap: turn.
turn > 1 ifTrue: [
(myCards copyWithout: (dealts atWrap: turn)) do: [:pCard |
(infer value: (dealts copy atWrap: turn put: pCard; yourself) value: turn) value ~= #?
ifTrue: [myCards remove: pCard]]].
others := dealts copyWithoutIndex: turn - 1 \\ 3 + 1.
lastAns := (names atWrap: turn) -> (true caseOf: {
[others min > myCards max] -> [#MIN].
[others max < myCards min] -> [#MAX].
[others max > myCards max and: [others min < myCards min]] -> [#MID]
} otherwise: [#?])
]. lastAns]) value: args value: Float infinity
].

indianPoker value: #(3 2 1). " #A->#MAX "
indianPoker value: #(5 2 4). " #B->#MIN "
indianPoker value: #(4 2 3). " #C->#MID "

363 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 03:24:01.44 ID:HtKIrWnT.net]
>>340 python3
https://ideone.com/2byzFd

364 名前:デフォルトの名無しさん [2018/11/11(日) 10:02:52.73 ID:ZG9KPLpE.net]
>>340
Rubyで。
https://ideone.com/PoaYk5

365 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 12:53:19.00 ID:ILkwXRqJ.net]
>>340 Squeak/Pharo Smalltalk

| fn |
fn := [:N |
(Array new: 3 withAll: N) reduce: [:mex :n |
mex \\ 100 = 0 ifTrue: [0] ifFalse: [n raisedTo: mex modulo: 100]
]
].

#(1 2 3 4 11 13



366 名前:100 777) collect: fn

"=> #(1 16 87 96 11 53 0 97) "
[]
[ここ壊れてます]

367 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 14:11:48.73 ID:j7sl2u35.net]
>>354
それだけでいけるのか
すげー

368 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 14:19:03.18 ID:SClia95W.net]
それでもJニキなら何とかしてくれる

369 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 14:25:13.88 ID:j7sl2u35.net]
よく読んだら素直に実装してるだけか

370 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 14:34:26.37 ID:ILkwXRqJ.net]
>>357
ですね…^^;

371 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 16:24:01.50 ID:xWJTm2Oc.net]
お題
n次のヒルベルト曲線を描画せよ

n=1
■□■
■□■
■■■

n=3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■

372 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 17:11:10.50 ID:Gv5Fmm22.net]
>>340 Perl5

use bignum (l=>GMP);
for $i (1,2,3,4,11,13,100,777) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}

実行例
$ time perl 12_338.pl
1 01
2 16
3 87
4 96
11 11
13 53
100 00
777 97

0.562 secs

373 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 17:52:24.96 ID:tvDFPkAv.net]
>>359 Ruby
def hilbert_curve(n)
  return [[1, 0, 1], [1, 0, 1], [1, 1, 1]] if n == 1
  hc = hilbert_curve(n - 1)
  [
    *hc.transpose.reverse.zip(hc.reverse.transpose).map{|a, b| [*a, 0, *b]},
    [1, *Array.new(2**(n + 1) - 3, 0), 1],
    *hc.zip(hc).map.with_index{|(a, b), i| [*a, 1/(i + 1), *b]}
  ]
end

[1, 3].each{|e| puts "n = #{e}", hilbert_curve(e).map{|a| a.join.gsub(/\d/, ?0 => ?□, ?1 => ?■)}.join($/)}
# => n = 1
■□■
■□■
■■■
n = 3
■□■■■■■□■■■■■□■
■□■□□□■□■□□□■□■
■■■□■■■□■■■□■■■
□□□□■□□□□□■□□□□
■■■□■■■□■■■□■■■
■□■□□□■□■□□□■□■
■□■■■■■□■■■■■□■
■□□□□□□□□□□□□□■
■■■□■■■■■■■□■■■
□□■□■□□□□□■□■□□
■■■□■■■□■■■□■■■
■□□□□□■□■□□□□□■
■□■■■□■□■□■■■□■
■□■□■□■□■□■□■□■
■■■□■■■□■■■□■■■

374 名前:デフォルトの名無しさん [2018/11/11(日) 22:01:36.28 ID:B3f/927d.net]
>>340
Haskell
素直に書いた版。
何やってるかは分かりやすい。

main = mapM_ put $ zip list $ map f list

put (x,y) = putStr (show x ++ ":") >> print y

f x = (x ^ x ^ x) `mod` 100

list = [1,2,3,4,5,6,7,8]

375 名前:デフォルトの名無しさん [2018/11/11(日) 22:10:56.11 ID:B3f/927d.net]
Haskell
Perlの人のパクリ版(めちゃ速い)

main = mapM_ put $ zip list $ map f list

put (x,y) = putStr (show x ++ ":") >> print y

f x = p
where j = x `mod` 100
k = j ^ j `mod` 100
p = j ^ k `mod` 100

list = [1,2,3,4,11,13,100,777]



376 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 22:20:34.69 ID:xWJTm2Oc.net]
>>360
n=10のときどうなる?

377 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 23:54:52.39 ID:VLVUrnJ+.net]
指数を100の剰余取ってるのってどういう根拠なの?

378 名前:デフォルトの名無しさん mailto:sage [2018/11/11(日) 23:59:16.36 ID:lebYcZ/K.net]
>>364
use bignum (l=>GMP);
for $i (10) {
$j = $i % 100;
$k = $j ** $j % 100;
$p = $j ** $k % 100;
printf "$i %02d\n", $p;
}

$i = 10;
print ($i**$i)**$i;

実行結果
$ perl 12_338_1.pl
10 01
10000000000

ダメですね合いませんね。
単に左辺を%100すると一般性はありませんでした。サーせん。
ちゃんと循環性を見るとか、別の解法が要りますね

379 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:02:23.31 ID:EX0FpiMD.net]
ちなみに循環性を見るとこんな感じになってました
use bignum (l=>GMP);
use Tie::IxHash;
use feature 'say';
for $i (0,1,2,3,4,5,10,11,13,777) {
tie my %h,'Tie::IxHash';
$p = $i;
for (1..100) {
last if exists $h{$p} and $h{$p} > 10;
$h{sprintf "%02d", $p % 100} = $_;
$p = $p * $i % 100;
}
@a = keys %h;
say "$i: ", scalar @a, ": @a", ": $p";
}

実行結果
1: 1: 01: 1
2: 21: 02 04 08 16 32 64 28 56 12 24 48 96 92 84 68 36 72 44 88 76 52: 48
3: 20: 03 09 27 81 43 29 87 61 83 49 47 41 23 69 07 21 63 89 67 01: 47
4: 10: 04 16 64 56 24 96 84 36 44 76: 16
5: 2: 05 25: 25
10: 2: 10 00: 0
11: 10: 11 21 31 41 51 61 71 81 91 01: 11
13: 20: 13 69 97 61 93 09 17 21 73 49 37 81 53 89 57 41 33 29 77 01: 37
777: 20: 77 29 33 41 57 89 53 81 37 49 73 21 17 09 93 61 97 69 13 01: 73

380 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:03:57.97 ID:EX0FpiMD.net]
>>366
× 単に左辺を%100
○ 単に右辺(指数)を%100

381 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:05:03.96 ID:JEwLf6Zk.net]
>>366
それは0乗しちゃってるからじゃない?

382 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:10:02.50 ID:EX0FpiMD.net]
>>369
10については、そういわれてみればそうだね。

383 名前:デフォルトの名無しさん [2018/11/12(月) 00:11:06.48 ID:D6ILV7Jx.net]
>>366
iが10で割り切れれば00って別で切り分ければ良いんじゃ無いかな。

384 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:18:43.46 ID:EX0FpiMD.net]
>>371
10については、そいうやり方も考えられるけど
上記の循環の例の11,13,777は指数を%100しても解は合うが
他の数値も単に指数を%100して解が合うか、一般性は疑わしいので、
>>360はちょっと勇み足だったかもしれないテヘペロ

385 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:19:14.52 ID:JEwLf6Zk.net]
>>367
0〜99までとりあえず循環部分の周期は全て20の約数になるみたいだけど
数学雑魚の俺には理屈がわからなかった

とりあえず、ざっくり100の剰余取るだけだと循環開始より小さい指数になったときにおかしくなりそう



386 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 00:52:30.78 ID:+qrAueUv.net]
>>372
寧ろそれが成り立つ方がかなり特別なケースだぞ

387 名前:デフォルトの名無しさん [2018/11/12(月) 02:34:45.23 ID:MtlIUxHY.net]
多分数学的には証明されていることだろうと思うが、x ^ 100 とか x ^ 200 とか x ^ 300 って、
下3桁の結果が同じになるようだな。どうしてかはわからんが。多分考えて行くとその内わかる
んだろう。後の事は数学が得意な人に任せた。

388 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 04:19:59.43 ID:lDwndekZ.net]
x^22 - x^2
が常に100で割り切れるのが理由だと思う
なので巡回群の長さは高々20までになる

389 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 04:44:54.48 ID:lDwndekZ.net]
もう少し分かりやすく書くと x^20 - 1 と x^21 - x が
100で割り切れる保証はない(実際大部分は割り切れない)が
x^22 - x^2 は絶対に100で割り切れる(合同式を用いれば証明は簡明)ので
一般に2以上の自然数 n に対して x^(n+20) - x^n ≡ 0 mod 100が成り立つ(xは整数)

よって一般に指数部の20の剰余を取っても問題ないと言える

390 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 04:49:06.55 ID:fKeD1dzA.net]
>>375
任意の整数 10n + r (-4 <= r <= 5)に対して
(10n + r)^100 = r^100 mod 1000 なので mod 1000 で
0^100 = 0
5^100 = 625^25 = 625
(±1)^100 = 1
(±2)^100 = 24^10 = 376
(±3)^100 = 243^5 = 1
(±4)^100 = 376^2 = 376
となって 0, 1, 376, 625 は2乗しても下3桁は変わらないから
任意の整数は100n乗しても下3桁は常に同じだね

391 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 09:11:34.15 ID:WiNaWTIj.net]
数学板でやれ。問題からしてクソだった。

392 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 10:17:56.51 ID:iaSpw+rm.net]
これ以上はスレ違いってなら同意だけど問題自体は別に良かっただろ

393 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 11:03:12.07 ID:oQPj2WUY.net]
とりあえず>>340の出題者は用意してあった解答を出そうか
くそ問題かどうかはそれを見て判断する

394 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 11:11:40.60 ID:iaSpw+rm.net]
既に回答がたくさん出てるのにクソ問題も何もねえだろ

395 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 11:51:52.42 ID:oQPj2WUY.net]
回答の多さとクソさとの相関はないだろ
例えばQiitaでいいねが多ければクソじゃないということがないのと同じように

そういうのはいいから出題者は早めに解答だしてくれ



396 名前:デフォルトの名無しさん mailto:sage [2018/11/12(月) 12:01:03.54 ID:iaSpw+rm.net]
ボクがわからないからクソとか草生えるわ
なんでお前の救い難い知的レベルに合わせてやらなければならいんだよ

397 名前:デフォルトの名無しさん [2018/11/12(月) 12:07:32.95 ID:iShTB70W.net]
>>383
最近のQiitaのトレンド見てて いいねの数=内容の薄さ だと思うようになってきたわ






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

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

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