19/11/17 09:00:22.10 xqEdXdr6.net
プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
URLリンク(ideone.com)
URLリンク(codepad.org)
URLリンク(compileonline.com)
URLリンク(rextester.com)
URLリンク(runnable.com)
URLリンク(code.hackerearth.com)
URLリンク(melpon.org)
URLリンク(paiza.io)
宿題は宿題スレがあるのでそちらへ。
※前スレ
プログラミングのお題スレ Part15
スレリンク(tech板)
2:デフォルトの名無しさん
19/11/17 10:53:15.74 uilOlN75.net
>>1 おつ
3:デフォルトの名無しさん
19/11/17 17:37:39.46 8gWobnsK.net
val 乙 = "乙"
prontln(乙)
4:デフォルトの名無しさん
19/11/18 02:35:04.18 t9gVOJNg.net
お題:
URLリンク(i.imgur.com)
明度が0~9までのグレーの四角がグラデーション状に横並びにならんでいるとします
この状態だと隣接している四角と四角の明度の差が少ないので境目が見えづらいです
全ての四角同士の明度差ができるだけ大きくなるように並び替えるにはどういうロジックが考えられるでしょう?
四角の数が増えても対応できるような汎用的なロジックが望ましいです
両端は固定のままが理想ですが必須要件ではありません
・ボツ例:1~4まで一つおきに左右端を入れ替える
(1) 1と8を入れ替える
(2) 2と7はそのまま
(3) 3と6を入れ替える
(4) 4と5はそのまま
※これだと4と5が隣り合ったままで明度差が少ない箇所が残るので最適解ではない
5:デフォルトの名無しさん
19/11/18 05:41:33.12 8+qUVevR.net
Σ|a_n - a_{n+1}| を最大化する問題なのか
inf{|a_n - a_{n+1}|} を最大化する問題なのか
どっちなんだ?
6:デフォルトの名無しさん
19/11/18 11:50:33.33 BCetHxzu.net
>>4
力業で確認したら
>>5 の判定ルールで前者後者ともに最大になるのは
[0, 5, 1, 6, 2, 7, 3, 8, 4, 9] だけみたい、前者 41、後者 4
前者だけだとスコア 41 で 576通り、後者だけだとスコア 4 で 2通り
そのもう一つの解は [0, 4, 8, 3, 7, 2, 6, 1, 5, 9] で前者の判定ルールだとスコア 39
[0, 5, 1, 6, 2, 7, 3, 8, 4, 9] を偶数項と奇数項に分けると…
7:デフォルトの名無しさん
19/11/18 18:43:37.24 DjoGz+4S.net
>>4 Java (両端固定ではない
URLリンク(ideone.com)
>>6
つまりこういうことかの?
両端固定で奇数個の場合はどうなるんじゃろ
8:デフォルトの名無しさん
19/11/18 20:03:36.58 EbN/HVpO.net
>>4
両端固定で最小隣接差を最大化する条件で回答する。Rですべての並べ方を虱潰しに
調べるのが URLリンク(ideone.com) で、結果は>>6が言う通りになる。
n = 10 ではすぐに終わるが、それを超えると時間がかなりかかるし、環境によっては
メモリ不足になる。
もう少し効率的に調べるのが URLリンク(ideone.com) で、n = 16 までは
すぐに終わる。それを超えると時間がかかるように段々なるので、さらなる効率化が
必要。
n = 10 と n = 16 の結果から、nが偶数の場合は>>6が言うように規則性が見られ、
nが大きくなっても並べ方は常に2通りで、例えば n = 256 のときは
0, 127, 254, 126, 253, 125, 252, ..., 2, 129, 1, 128, 255
0, 128, 1, 129, 2, 130, 3, ..., 253, 126, 254, 127, 255
になると予想されるが、それが正解であることを理論的に説明しないといけないな。
9:デフォルトの名無しさん
19/11/21 21:52:25.50 1mUnuvuP.net
>>4
【nが偶数の場合の>>8の予想を理論的に説明する】(等幅フォントでの表示推奨)
n = 10のとき、最小階差をd >= 6と仮定すると 0: 4, 5, 6, 7, 8
4に隣接できる数はなく、d = 5と仮定すると9だ 1: 5, 6, 7, 8, 9
けなので、数列が途切れてしまって続かない。 2: 6, 7, 8, 9
よってd >= 5はあり得ず、d = 4から調べれば良 3: 7, 8, 9
い。d = 4のとき各数が隣接できる数を列挙する 4: 0, 8, 9
と、右図のようになる。 5: 0, 1, 9
6: 0, 1, 2
7: 0, 1, 2, 3
8: 0, 1, 2, 3, 4
9: 1, 2, 3, 4, 5
これらの候補からそれぞれ2個(両端の0と9では 0: (4), (5), >6<, >7<, >8<
1個)ずつを選ぶ問題となる。4で、0と9を両方選 1: [5], 6, 7, 8, >9<
ぶと0→4→9で順列が終わってしまうため片方し 2: 6, 7, 8, >9<
か選べないから、8を必ず選ぶことが確定する。 3: 7, 8, >9<
同様に5で1が確定する。選択確定に[]、どちら 4: (0), [8], (9)
か一方を選択に()、非選択の確定に><の印をつ 5: (0), [1], (9)
けると、右図になる。 6: >0<, 1, 2
7: >0<, 1, 2, 3
8: >0<, 1, 2, 3, [4]
9: >1<, >2<, >3<, (4), (5)
10:デフォルトの名無しさん
19/11/21 21:53:22.41 1mUnuvuP.net
3と6で候補がそれぞれ2個に絞られたから、それ 0: (4), (5), >6<, >7<, >8<
らが選択確定となり、右図になる。 1: [5], [6], >7<, >8<, >9<
2: [6], 7, >8<, >9<
3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, 2, [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
2と7で残り候補がそれぞれ1個に絞られたから、 0: (4), (5), >6<, >7<, >8<
それらが選択確定となり、結局、可能な並べ方 1: [5], [6], >7<, >8<, >9<
は右図のように0の次に4か5から始まる2通りし 2: [6], [7], >8<, >9<
かないことが分かる。 3: [7], [8], >9<
4: (0), [8], (9)
5: (0), [1], (9)
6: >0<, [1], [2]
7: >0<, >1<, [2], [3]
8: >0<, >1<, >2<, [3], [4]
9: >1<, >2<, >3<, (4), (5)
同様にして、nが偶数の場合を一般化し、中央の2つの数n / 2 - 1とn / 2でそれぞれ
n - 2と1を選択確定、0とn - 1を一方選択とするところから始めて、順々に選択確定
させていくことができる。
>>8の予想を理論的に説明できたので、それに基づくプログラムを晴れて作成すると、
URLリンク(ideone.com) になる。
11:デフォルトの名無しさん
19/11/21 21:54:24.25 1mUnuvuP.net
nが奇数の場合にも偶数の場合と似たようにしてd >= (n - 1) / 2 はあり得ず、
d = (n - 1) / 2 - 1 から調べれば良いことが分かるが、偶数の場合と違い
選択確定できる数はない。>>8の元請け関数のforループの開始値をnではなく
n %/% 2 - 1に置き換えるだけでは、実行時間は5~6%くらいしか短縮されない。
偶数の場合のような図の作成により、調べる組み合わせを減らしていくことは
できるが、プログラムを書くのはかなり面倒そう。
12:デフォルトの名無しさん
19/11/21 22:40:32.33 vr0RSw67.net
>>4 Squeak Smalltalk。両端固定せず、対称排除なしの虱潰しで。
| min |
min := 0 -> OrderedCollection new.
(0 to: 9) permutationsDo: [:perm |
| curr |
curr := (perm overlappingPairsCollect: #-) abs min.
curr = min key ifTrue: [min value add: perm copy].
curr > min key ifTrue: [min := curr -> (OrderedCollection with: perm copy)]
].
^min value asArray "=> #(#(4 9 3 8 2 7 1 6 0 5) #(5 0 6 1 7 2 8 3 9 4)) "
"Pharo向け => URLリンク(ws.stfx.eu)
13:デフォルトの名無しさん
19/11/22 20:06:41.59 EyqF2Cmi.net
お題:読み手を一瞬戸惑わせよ
URLリンク(ideone.com)
14:デフォルトの名無しさん
19/11/23 05:56:02 KvoIJqUR.net
URLリンク(twitter.com)
キー入力を一定時間ごとに送るソフトを書いたのだけど、やっぱりグレーですか?
パケット改変して無くて、メモ帳ではうまくいってる。
UOクライアントに使うのが怖くて躊躇している。
(deleted an unsolicited ad)
15:デフォルトの名無しさん
19/11/23 06:01:06 KvoIJqUR.net
あ、UOスレに書いたものだと・・・。
16:デフォルトの名無しさん
19/11/23 22:51:11.49 ubdNKuk5.net
>>4を>>11の方式で求めるプログラムを書いてみた: URLリンク(ideone.com)
nが偶数の場合、n = 8までは>>8の2
17:番目のプログラムと比べて遅いが、n = 10, 12, 14, 16, 18, 20ではそれぞれ1.78倍、7.16倍、49.8倍、327倍、3120倍、30800倍の 速度になり、差がどんどん開いていく。n = 256でも1秒未満で求められる。 nが奇数の場合、n = 11までは遅いが、n = 13で同程度になり、n = 15, 17, 19, 21では それぞれ3.25倍、12.6倍、58.8倍、325倍の速度で、差がやはりどんどん開いていく。 nが2大きくなるごとに並べ方の通り数が2倍以上に増えるようなので、n = 255では どんなアルゴリズムを使ってもコンピュータの性能限界をはるかに超えてしまう。
18:デフォルトの名無しさん
19/11/24 20:41:58.58 NMcltmqU.net
今日は夕焼けが超絶綺麗だったよ。
今まで見たことないくらい。
まだきれいになるだろうか、というのと、これ一回で終わりだろうか。
というのがあった。
19:デフォルトの名無しさん
19/11/25 01:25:34.58 SBJvKXmI.net
お題:Diffアルゴリズムを実装せよ。
差分アルゴリズム、さんぷる。
1:abcdef
2:abdef -> -3:c
3:bcdef -> -1:a,+3:c
4:abcdef -> +1a
以上がオレの考えるアルゴリズムだが、
もっとより良いアルゴリズムが世の中にはあるはずなので、
実装しませんか?
20:デフォルトの名無しさん
19/11/25 09:24:47.39 veETdbiQ.net
>>18
それはアルゴリズムではなく入力と出力のサンプル。
まあとにかく足された文字は+と位置と足された文字(または文字列?)を出して引かれた文字は-と位置と文字を出す仕様ということだな。
で、位置は先頭が1だと。
後で時間が空いたら考えとく。
21:デフォルトの名無しさん
19/11/25 22:13:03.88 UwQDpJpg.net
>>18
URLリンク(ideone.com)
Rには編集前後の文字列のレーベンシュタイン距離を求める便利な関数adistが
備わっていて、1文字の挿入、削除、置換操作が必要な位置をI, D, S、操作が不要な
位置をMで示す文字列を返してくれる。例えば、"abdef" と "bcdef" を与えると、
"DMIMMM" が得られる。あとは、>>18の出力形式にちょっと加工するだけ。
22:デフォルトの名無しさん
19/11/26 01:23:24 q8waUqPK.net
>>18
Kotlin
URLリンク(paiza.io)
1文字以上の追加や削除も出せるようにしてある。
23:デフォルトの名無しさん
19/11/26 11:38:36 JjgFJEIb.net
>>18
C
URLリンク(paiza.io)
24:デフォルトの名無しさん
19/11/26 15:12:16 JjgFJEIb.net
>>18
Perl
URLリンク(paiza.io)
あまりPerlの特性を生かせてないような、かといって今のところこれぐらいしか思い浮かばない。
25:デフォルトの名無しさん
19/11/26 16:15:14 FF/Zqwz/.net
>>18
やっぱお前ら高性能だな。言い方悪いけど。
26:デフォルトの名無しさん
19/11/28 17:24:57.64 mMrv+0Zt.net
高性能じゃない俺にもできるお題をたのむ
27:デフォルトの名無しさん
19/11/28 20:14:43.82 mbBdSv/T.net
お題:自然数aをいくつか[※1]の自然数の組の和で表すとき、それらの自然数の組の
積[※2]が最大となるような自然数の組を、aが1から100までに対して表示せよ[※3]。
[※1] 1つでも構わず、その場合には和も積も自然数n自身となる。
[※2] 例えば、7を1+2+4と表せば積は1*2*4=8、2+5と表せば積は2*5=10であり、
後者の積の方が大きい。
[※3] 最大となるような自然数の組が複数ある場合は、すべての組を表示せよ。
28:デフォルトの名無しさん
19/11/28 20:24:13.35 522sTouZ.net
>>26
同じ数字は何回も使っていいの?
29:デフォルトの名無しさん
19/11/28 20:30:31.52 mbBdSv/T.net
>>27
可。
30:デフォルトの名無しさん
19/11/28 21:08:44.29 pgFu+V4e.net
後で虱潰しに全部計算するやつでも作るかな
31:デフォルトの名無しさん
19/11/28 21:12:26.03 522sTouZ.net
同じ数字を何回も使っていいんだったら2と3だけで作って、2*2を4と置き換えたものを追加(※3のため)すればええんかね?
aが1の場合は1
aが偶数の場合2^(a/2)
aが3以上の奇数の場合2^((a-3)/2)+3
32:デフォルトの名無しさん
19/11/28 21:20:11.41 EjjwcG+D.net
f(a,n)=(a/n)^n
df/dn =(a/n)^n * (-1+log[a/n]) な感じなので
ne=aで増減変化な気がするから
それ前後の整数2つだけしらべれば大丈夫?
a<=100, a>=1 だから200回調べる感じ
33:デフォルトの名無しさん
19/11/28 22:03:53.95 uZ7jROyS.net
3で分割できている間は3で残りが1になってしまう場合は最後の4を2x2にするのが最大っぽいね
7だったら3+3+1ではなくて3+2+2
12は3+3+3+3
13は3+3+3+2+2
100までずっとこれ
最大値しか表示しないけど
URLリンク(ideone.com)
34:デフォルトの名無しさん
19/11/28 22:37:08.59 PoPpbfsh.net
求める値をf(a)とする
b+c=a, b<=c, b>0, c>0 となる全てのb,cに対して
max { f(b) f(c) } と a の大きい方
となる
f(a) を a=1 の時から順番に調べれば良い
aが十分大きくて小数も許すなら
e=2.7182818... に分けるのが最善
整数なら>>32の通りかな?
35:デフォルトの名無しさん
19/11/28 22:43:58.67 522sTouZ.net
あー、2より3の方がよかったかー
36:デフォルトの名無しさん
19/11/28 22:48:21.15 PoPpbfsh.net
1以外の時には1が出ない
5以上は2個以上に分けた方が大きい
4は2+2にしても同じ
6は2+2+2より3+3よ方が大きい
だから
a>=2の時には
2、3、4以外の値はあらわれず
2と4をあわせて6以上にはならないことがわかる
つまり、(順番を無視すれば)以下の形のみになる
3+3+...+3
3+3+...+3+2
3+3+...+3+2+2
3+3+...+3+4
37:デフォルトの名無しさん
19/11/29 15:19:10.07 Ursk3Xfl.net
>>35
なぜそれで「だから」となるのかわからない。
38:デフォルトの名無しさん
19/11/29 17:42:19.99 YkvT9y9m.net
2、3、4以外の値はあらわれず
2と4をあわせて6以上にはならない
どっちがわからない?
39:デフォルトの名無しさん
19/11/29 17:48:24.95 YkvT9y9m.net
.... が正として、
.... * n * 1 < .... * (n+1)
.... * n < .... * floor(n/2) * ceil(n/2) @nが5以上
.... * 2 * 2 * 2 < .... * 3 * 3
.... * 4 = .... * 2 * 2
40:デフォルトの名無しさん
19/11/29 17:57:55.99 YkvT9y9m.net
一応、
加算と乗算は交換法則と結合法則が成り立つ
ってのも必要な条件です
41:デフォルトの名無しさん
19/11/29 20:54:17.14 dycaAJcC.net
>>37
なぜ現れないとわかるのか?
42:デフォルトの名無しさん
19/11/29 21:03:35.14 M9vvD3Fp.net
>>40
38で書いてくれてる
5以上なら分割したほうが大きくなるから最終的な数字は5未満になる
43:デフォルトの名無しさん
19/11/29 21:19:59.63 dycaAJcC.net
え?そうなの?わかりづらいな。見てもわからんよ。
44:デフォルトの名無しさん
19/11/29 21:29:43.92 57KUyJj8.net
なんでわからんのかがわからん
45:デフォルトの名無しさん
19/11/29 21:39:03.80 M9vvD3Fp.net
38の内容は
1行目で1が無意味なので1が出ない
2行目で5以上は分割したほうがでかくなる
3行目で2*2*2と3*3は同じ
4行目で2*2と4は同じ
を説明している
3行目4行目はパターンを列挙するために必要な内容
46:デフォルトの名無しさん
19/11/30 02:03:19 8/O2xSEo.net
5以上は分割した方が大きくなる事に関しては数学的に証明できてるってこと?
47:デフォルトの名無しさん
19/11/30 02:12:04 NRfKrTi3.net
したつもり en=aのような感じのあれ
48:デフォルトの名無しさん
19/11/30 02:28:06 Qe4NE6bn.net
n/2*n/2=n^2/4
だからn=4ならnと同じ、5以上なら分子が大きくなるからnより大きくなる
整数でに分割なので↑は偶数のときに限定
奇数のときは
(n-1)/2*(n+1)/2=(n^2-1)/4
だからnが5以上ならnより大きい
49:デフォルトの名無しさん
19/11/30 07:09:20 WebQyLi7.net
>>45
より大きくなる具体的な分け方を>>38に書いた
半分の、小数点以下切り上げ
半分の、小数点以下切り捨て
に分ける
これの方が大きい証明はとても簡単
(でもあまりエレガントではない)
もちろんこの分け方が最大というわけではないが
最大の分け方が5以上を含むと仮定すると、
より大きなものが存在するので矛盾
だから5以上は含まない
と言う事が出来る
50:デフォルトの名無しさん
19/11/30 07:13:05 WebQyLi7.net
最大となる分け方が存在する
ってのは有限性から明らか
つまり、
少なくとも1個の分け方が存在する
分け方は有限個しかない
から明らか
51:デフォルトの名無しさん
19/11/30 11:15:44.62 WebQyLi7.net
n ≧ 5 の時
floor(n/2) * ceil(n/2) - n
> { (n - 1) / 2 } * { n / 2 } - n
= n (n - 5) / 4
≧ 0
よって
n < floor(n/2) * ceil(n/2)
52:デフォルトの名無しさん
19/11/30 17:07:38.94 0h0IqWCg.net
これでわからんのなら数学じゃなくて日本語が不自由と断言してよいレベルだな
53:デフォルトの名無しさん
19/11/30 17:44:52.22 hV/U21TG.net
>>26
URLリンク(ideone.com)
C++。二進数最強伝説を信じて書いてみたよ。
数学出来ないからいつも通り適当に解いてる。。。
54:デフォルトの名無しさん
19/11/30 18:01:19.21 hV/U21TG.net
あ、間違ってら。
55:デフォルトの名無しさん
19/11/30 18:08:13.55 +iwJeZ8g.net
>>44
今更だけど3行目の説明間違えてた
2*2*2より3*3が大きい
なので結果的に解は3がたくさん並んで後ろで足りない分を2、もしくは4つける形になる
56:デフォルトの名無しさん
19/11/30 18:12:03.75 hV/U21TG.net
>>26
URLリンク(ideone.com)
C++。理屈が良くわからんけど、これが俺の限界。
2で欠けたほうが普通はいいんだけど、3の倍数は2引くと1余るのでそういうところでコスト取られるのでしょうかねぇ??
プリミティブ触ったほうが詰め込めるというのは普遍的にあると思うのだけどね。。。
もしかしたら、どっかの素数がスイートスポットになってて変な切り方しないとうまくないってこともあるかもしれない。
57:デフォルトの名無しさん
19/11/30 18:18:01.40 hV/U21TG.net
屁理屈だけど、2と3の組み合わせで表せる数字は多いということかなぁ??
58:デフォルトの名無しさん
19/11/30 18:18:52.60 hV/U21TG.net
2の倍数で且つ3の倍数の時は2を使うのがいいのか3を使うのがいいのか解らない。
59:デフォルトの名無しさん
19/11/30 18:25:54.08 hV/U21TG.net
>>55も若干間違ってるなぁ。
2と3の倍数を兼ねる数字はその数字単体によって切り方を変えないといけないんだと思う。
なんかゲーム的。
60:デフォルトの名無しさん
19/11/30 18:26:46.97 hV/U21TG.net
うーん。わけ わか らん 。。
61:デフォルトの名無しさん
19/11/30 18:43:15.79 hV/U21TG.net
URLリンク(ideone.com)
オマケ・鼻から悪魔かいな。。。
62:デフォルトの名無しさん
19/11/30 19:36:20.16 hV/U21TG.net
URLリンク(ideone.com)
うがー、おまけのオマケ。>>60はオレのバグだった。。。Orz
63:デフォルトの名無しさん
19/11/30 19:40:07.22 8+8CeiWg.net
>>35で終わり
はい次
64:デフォルトの名無しさん
19/11/30 19:54:08.36 hV/U21TG.net
>>62
なるほど。一応そこにはたどり着いたが、迷いの中だ。。。
65:デフォルトの名無しさん
19/11/30 20:15:09.44 c0k0ajHF.net
>>26の出題者です。>>32で正解ですが、お題の指示通りに自然数の組み合わせを
出力してもらいたかったな。こういう綺麗な三角形ができるから。
1: [1]
2: [2]
3: [3]
4: [4]
4: [2, 2]
5: [2, 3]
6: [3, 3]
7: [3, 4]
7: [2, 2, 3]
8: [2, 3, 3]
9: [3, 3, 3]
10: [3, 3, 4]
10: [2, 2, 3, 3]
11: [2, 3, 3, 3]
12: [3, 3, 3, 3]
13: [3, 3, 3, 4]
13: [2, 2, 3, 3, 3]
14: [2, 3, 3, 3, 3]
15: [3, 3, 3, 3, 3]
16: [3, 3, 3, 3, 4]
16: [2, 2, 3, 3, 3, 3]
17: [2, 3, 3, 3, 3, 3]
18: [3, 3, 3, 3, 3, 3]
19: [3, 3, 3, 3, 3, 4]
19: [2, 2, 3, 3, 3, 3, 3]
20: [2, 3, 3, 3, 3, 3, 3]
21: [3, 3, 3, 3, 3, 3, 3]
22: [3, 3, 3, 3, 3, 3, 4]
(以下略)
66:デフォルトの名無しさん
19/11/30 20:17:08.99 c0k0ajHF.net
1から9までの行頭の半角空白が消えちゃったな。
67:デフォルトの名無しさん
19/11/30 22:34:49.11 jbs9cucn.net
並び替えは無視?
68:デフォルトの名無しさん
19/12/01 01:13:31.67 2OVww3gB.net
「ループを使わずに1から100を順に出力するコードは書けますか」
69:デフォルトの名無しさん
19/12/01 01:22:27.49 ed/fyTUF.net
>>67
C
URLリンク(ideone.com)
70:デフォルトの名無しさん
19/12/01 01:55:41.13 ztn4h68A.net
seq 100
71:デフォルトの名無しさん
19/12/01 02:00:13.95 vkZvYyYJ.net
>>67
void Array.from({length:100}, (_, i) => {
console.log(i + 1);
});
とか
let counter = 0;
void function count() {
if (counter++ < 100) {
console.log(counter);
count();
}
}();
とか。js
72:デフォルトの名無しさん
19/12/01 06:08:36 jm8+wa+d.net
>>67 Ruby アイデアは前スレの誰かのパクリ
p 10**303 / 999**2
# => 10020030040050060070080090100110120130140150160170180190200210220230240250260270
28029030031032033034035036037038039040041042043044045046047048049050051052053054
05505605705805906006106206306406506606706806907007107207307407507607707807908008
1082083084085086087088089090091092093094095096097098099100
73:デフォルトの名無しさん
19/12/01 09:04:24.78 lTEhnVlg.net
>>67 julia
println.(1:100)
74:デフォルトの名無しさん
19/12/01 17:27:50.28 mlX7masq.net
>>67 GNU Smalltalk
(1 to: 100) asArray display
URLリンク(ideone.com)
75:デフォルトの名無しさん
19/12/01 18:17:04.86 54WkPiOY.net
>>67
Kotlin script
(1..100).forEach(::println)
今スマホから書いてて試せないんだが多分これでできる。
forEachはループだというならこれではダメだが(確かに中ではループしていると思う)。
76:デフォルトの名無しさん
19/12/01 18:51:37.83 Enyr5Fgf.net
>>67
PowerShell
1..100
77:デフォルトの名無しさん
19/12/01 19:26:37.77 IoGKXgrY.net
>>71
これが日本のIT産業。
78:デフォルトの名無しさん
19/12/01 21:21:54.10 3oGVZyBI.net
お題: アルファベットの文字列の大文字と小文字の対応を反転させて表示しろ
in < Hello, World!
out > hELLO, wORLD!
79:デフォルトの名無しさん
19/12/01 21:48:29.67 5gm7V8wf.net
>>77 Ruby
puts 'Hello, World!'.swapcase # => hELLO, wORLD!
80:デフォルトの名無しさん
19/12/01 22:32:24.47 ztn4h68A.net
vim 的には ~ 一発
81:デフォルトの名無しさん
19/12/01 23:10:18.94 sAJI+X1W.net
>>77 Common Lisp
(defun string-invert-case (string)
(map 'string
(lambda (c)
(if (l
82:ower-case-p c) (char-upcase c) (char-downcase c))) string)) (write-line (string-invert-case "Hello, World!"))
83:デフォルトの名無しさん
19/12/02 02:15:21 6Q7teWoI.net
>>77
tr コマンド
tr a-zA-Z A-Za-z
実際に実行するとこうなる。
URLリンク(paiza.io)
84:デフォルトの名無しさん
19/12/02 08:36:45.67 gdxsQr6e.net
>>67 PHP
<?=implode(range(1,100)," ")?>
85:デフォルトの名無しさん
19/12/02 15:32:31.35 APM7ABg4.net
お題: コンビニでタバコ(マルボロ)を買いたい
喫煙者がコンビニでタバコを購入して喫煙するまでの疑似コードを書け
詳細にかつ現実的で、エラー/例外に可能な限り対応していれば高得点とする
例:
person.walk_to(conbini)
if conbini.has(person) {
employee = conbini.get_current_employee()
tobacco = person.request_to(employee, "マルボロ")
person.smoke(tobacco)
}
86:デフォルトの名無しさん
19/12/02 16:09:21.37 KwsHxcvC.net
ヤニカスはしね
87:デフォルトの名無しさん
19/12/02 17:33:22.44 54OAxivC.net
1,マルボロ吸いてー。
2,そうだコンビニへ行こう
3,財布を確認
4,どうやって行こうか
5,準備して家を出る
6,道中色々
7,コンビニ到着
8,コンビニ物色
9,予備で買わなければいいけないモノを示唆
10,カゴ買うモノを入れる
11,レジに行く
12,レジでタバコの番号を「N個クレ」という。
13,ホットスナックを示唆する
14,会計が出る
15,ポイントカードを出す
16,お金を払う
17,品物を受け取る
18,コンビニをでる
19,喫煙スポット検索
20,喫煙スポットへいく
21,道中色々
22,到着
23,タバコを開けて一本取り出す
24,ライターで火をつける
25,吸う
26ぷれじゅあぁあああああああああああ
88:デフォルトの名無しさん
19/12/02 17:39:36.73 54OAxivC.net
タバコに火をつける時は、咥えて軽くチューブを吸わないとつかないのDA!!
89:デフォルトの名無しさん
19/12/02 21:58:19.49 gdxsQr6e.net
>>67 Pxthon
print(*range(1,101))
90:デフォルトの名無しさん
19/12/02 22:05:34.98 gdxsQr6e.net
>>87
すいません Python です
91:デフォルトの名無しさん
19/12/02 22:07:19.69 /Z+nXxB0.net
>>76
どゆ意味?
92:デフォルトの名無しさん
19/12/02 22:09:31.28 az4xQt0G.net
示唆 ってナニ
93:デフォルトの名無しさん
19/12/03 01:47:20 dBsSbed7.net
令和元年(2019年)8月25日(日)・(再)9月1日(日)
テーマ: 未来につながる力を学ぶ プログラミング教育
内容: 2020年度から小学校で始まる「プログラミング教育」。
一体どんな授業が行われるのか?番組では一足先に
プログラミングを取り入れた授業を行っている小学校を取材。
そこには生き生きと楽しく学ぶ子供たちの姿が。さらに、
実際に授業で使われている教材で、徳光さんがプログラミングに初挑戦!
今回は文部科学省プログラミング教育戦略マネージャーの中川哲さんと共に、
進化する学び、「プログラミング教育」に迫ります。
URLリンク(www.gov-online.go.jp)
動画は上のURLにある
94:デフォルトの名無しさん
19/12/03 17:02:12 /pkZgP0J.net
>>67 jq
range(1;101)
95:デフォルトの名無しさん
19/12/03 19:25:09.89 mUaHu9IR.net
>>67
perl5
perl -e 'print join "\n", 1..100'
96:デフォルトの名無しさん
19/12/03 20:10:35.90 aor79FgV.net
>>67
Prel5 ってまだ出てないよね?
print join(' ', 1..100) . "\n";
97:デフォルトの名無しさん
19/12/04 09:18:44 MGV4EHAd.net
永久に出ないんじゃないかなPrel5なんて
98:デフォルトの名無しさん
19/12/04 12:00:08 aCqgWIP/.net
プレル・ふぁいぶ ならショウガナイ
99:デフォルトの名無しさん
19/12/04 12:58:50.91 61i6ZWvj.net
print(isletter(c)
100:デフォルトの名無しさん
19/12/04 13:07:17.16 61i6ZWvj.net
>>97
すいません。ブロックされて書き込みができないのでいろいろテスト中。
101:デフォルトの名無しさん
19/12/04 17:21:06 0j0R5u4a.net
>>95>>96
打ちまつがえた。
そしてリロードしてなくて書いた直後に上にPerl5の書き込みが出現orz
102:デフォルトの名無しさん
19/12/04 22:22:08.38 gi4YpuTv.net
>>67 Perl5
print "@{[1..100]}\n";
103:デフォルトの名無しさん
19/12/04 23:37:13.25 h1My/is4.net
お題: 1~100までの数列の和を計算する
104:デフォルトの名無しさん
19/12/04 23:58:51 +9nEsnh/.net
>>101 Ruby
$><<101.times.sum # => 5050
105:デフォルトの名無しさん
19/12/05 00:15:30 5juZ/T5v.net
>>101 julia
print(sum(1:100))
106:デフォルトの名無しさん
19/12/05 06:49:18 5PaJAEA2.net
return 100*101/2;
107:デフォルトの名無しさん
19/12/05 07:16:44 P/hgT5Y1.net
>>104
なぜ return 5050; でないのか小一時間ほど問い詰めたい
108:デフォルトの名無しさん
19/12/05 07:38:40 5PaJAEA2.net
自分で計算したくないから
109:デフォルトの名無しさん
19/12/05 07:40:32 8H7awdOo.net
最適化されるから一緒
意図がわからない
変数に置き換えて汎用化できない
一時間しゃべってみろよおい
110:デフォルトの名無しさん
19/12/05 07:43:45 5PaJAEA2.net
>>105に対する>>104の利点
(比較的)変数に置き換えやすい
計算式がわかる
自分で計算しなくて良い
111:デフォルトの名無しさん
19/12/05 07:46:36 5PaJAEA2.net
>>104 に対する >>105 の利点は何?
112:デフォルトの名無しさん
19/12/05 07:47:29 5PaJAEA2.net
5文字少ない
だけかな?
113:デフォルトの名無しさん
19/12/05 10:43:44 P/hgT5Y1.net
>>108
そういうことを言うならせめて
return 100*(100+1)/2;
って書けよ
114:デフォルトの名無しさん
19/12/05 13:14:45 2uRKrxFi.net
+1
は手計算の手間もないし見ればわかる
非常に利点が少なく
文字入力の手間が相対的に大きくなる
115:デフォルトの名無しさん
19/12/05 13:17:19 2uRKrxFi.net
どっちでも大差無いけど
116:デフォルトの名無しさん
19/12/05 13:21:01 2uRKrxFi.net
次は>>105の利点を語ってくれよ
小一時間
117:デフォルトの名無しさん
19/12/05 14:27:21 esMh+bxM.net
>>101
Kotlin script
println((1..100).sum())
118:デフォルトの名無しさん
19/12/05 14:31:48 esMh+bxM.net
ま、しかし、昔々算数で四角を描いて 100 * (100 + 1) / 2 で出来ると習ったような気がするので馬鹿正直に1から100まで足す必要はないな。
119:デフォルトの名無しさん
19/12/05 15:17:30 2uRKrxFi.net
工夫出来るところは工夫する
>>105は間違った工夫の例
120:デフォルトの名無しさん
19/12/05 18:32:49.00 27clmKvC.net
>>105が小一時間いったい何を問い詰めるつもりだったのか気になる
121:デフォルトの名無しさん
19/12/05 18:59:48.69 2GEt9xQA.net
おっすおら小一時間!
これからの議論におらわくわくすっぞ!
122:デフォルトの名無しさん
19/12/05 20:44:21.68 lop64poz.net
>>101
Cの冗談
URLリンク(ideone.com)
123:デフォルトの名無しさん
19/12/05 21:05:41.72 jKYC5XJL.net
決まり文句のネタレスにえらく執着すんねw
124:デフォルトの名無しさん
19/12/05 21:06:33.94 5PaJAEA2.net
1個目の関数で値だけ返すほうが簡単じゃ?
125:デフォルトの名無しさん
19/12/05 21:35:53.74 P/hgT5Y1.net
>>118
お前のアホさとか、多分一時間じゃ足りないw
126:デフォルトの名無しさん
19/12/05 21:36:32.26 P/hgT5Y1.net
>>117
中途半端な工夫ならしないほうがマシ
127:デフォルトの名無しさん
19/12/05 21:55:42.81 5PaJAEA2.net
出て来れないと思ったのに
面の皮厚いね
128:デフォルトの名無しさん
19/12/05 22:09:17.41 P/hgT5Y1.net
>>111にレスできないアホがなにか言ってるなw
129:デフォルトの名無しさん
19/12/05 22:40:10.86 JeZRd2se.net
小一時間とかサムいフレーズでウケると思ってるからウザがられんだよ
130:デフォルトの名無しさん
19/12/05 23:12:12.53 2GEt9xQA.net
俺は別にうざがってないぞ
なに全員がうざがってるみたいなまとめ方するんだよ
131:デフォルトの名無しさん
19/12/05 23:23:32.05 d0dfL3uy.net
いいからおまえはどっかで2GEtしてこい
132:デフォルトの名無しさん
19/12/05 23:25:08.31 8H7awdOo.net
小一時間問い詰めるとか
具体的に想像すると陰湿極まりないパワハラが思い浮かぶ
133:デフォルトの名無しさん
19/12/05 23:35:21.46 LiE2fHBS.net
5ch初心者かよw
134:デフォルトの名無しさん
19/12/05 23:39:56 8H7awdOo.net
5chのプロかよ
135:デフォルトの名無しさん
19/12/05 23:56:23 uvnytkqs.net
こんな煽り合い久々に見たw
136:デフォルトの名無しさん
19/12/06 00:22:47 N/M0C4CM.net
初心者じゃない奴が全員プロだとでも思ってるのかなぁw
まあとりあえずこれ読んどけ
URLリンク(netyougo.com)
137:デフォルトの名無しさん
19/12/06 01:10:21 Rsc9FZ2h.net
用語とか以前に粘着っぷりがやばい
138:デフォルトの名無しさん
19/12/06 02:06:00 RapGeMK4.net
背筋がサムくなるからもうやめてくれないかな
139:デフォルトの名無しさん
19/12/06 03:33:54.64 BprTHIND.net
ものすごい速度で羊を数えてください
1 sheep two sheep three sheep four sheep ...........
140:デフォルトの名無しさん
19/12/06 05:57:24.96 Ket1H4Yu.net
>>137
とりあえずお題なの?
曖昧すぎてわからん
141:デフォルトの名無しさん
19/12/06 06:42:40.11 yuBnjbMi.net
>>136
>>135
142:デフォルトの名無しさん
19/12/06 14:03:18 zI729h7a.net
>>101 julia
f(a,b)=(a+b)*(b-a+1)÷2
f(1,100) #-> 5050
f(50,80) #-> 2015
143:デフォルトの名無しさん
19/12/06 22:43:04.72 7FicwbM7.net
>>101 Perl5
use feature current_sub;
print sub {$_[0] and $_[0] + __SUB__->($_[0] - 1)}->(100);
144:デフォルトの名無しさん
19/12/06 22:53:13.95 7FicwbM7.net
>>101 Perl5
sub Y_combinator { my $f = shift;
sub { my $x = shift; $x->($x) }->(
sub { my $y = shift;
$f->(sub {$y->($y)(@_)}) }
)
}
my $series = sub {my $f = shift;
sub { my $n = shift; $n and $n + $f->($n - 1) }
};
print Y_combinator($series)->(100);
145:蟻人間
19/12/06 23:19:56.34 jz2bvt/z.net
お題: 丸カッコと空白の並びで構成される入力文字列がある。丸カッコは入れ子になっていてそれぞれペアになっている。入力文字列は奇数文字数である。
プレーヤー1は、最初に入力文字列の一番左端に居る。プレーヤー2は最初に入力文字列の一番右端に居る。各プレーヤーは一回のアクションで次のいずれかの動作が可能。
(あ) カッコを飛び越えずにひとつ左か右に移動する。ただし、入力文字列の外側には移動できない。
(い) プレーヤーXがカッコAの外側に居て、AとXが隣接しているとき、XがカッコAに対応する別のカッコBの外側の端に移動する。
(う) カッコをひとつまたいでひとつ左か右に移動する。
入力文字列に対してプレーヤー1と2を何度もターン制でアクションをさせてプレーヤーの位置が衝突するまで鬼ごっこをさせよ。
動かすのはランダムでも知能つきでも構わない。アクションごとに位置を表示せよ。
146:蟻人間
19/12/06 23:33:56.47 jz2bvt/z.net
知能戦略の例)
鬼はなるべく近くなる方を選ぶ。
子どもは鬼からなるべく遠ざかるように動く。
147:デフォルトの名無しさん
19/12/07 00:07:48.78 n8phrA6e.net
動き方がわかりません
1文字右が ( の場合
(あ)1文字右に動く
(い)右の ( に対応する ) の右の文字に動く
(う)2文字右に動く
のいずれかが出来る
ただし、(い) (う) の移動先が文字列の外になる場合は移動出来ない
でいい?
148:デフォルトの名無しさん
19/12/07 00:25:15.68 FrJsgiML.net
あ と う は合わせられないか?
149:デフォルトの名無しさん
19/12/07 00:25:52.72 7zlttp1T.net
>>101 Perl5
no warnings 'experimental::signatures';
use feature qw(say signatures);
sub f($n) {$n and $n + f($n - 1)};
say f(100);
sub Y($f) { sub {$f->(Y($f))->(@_)} }
say Y(sub($f) { sub($n) { $n and $n + $f->($n - 1) } })->(100);
150:デフォルトの名無しさん
19/12/07 00:44:47.39 7zlttp1T.net
>>101 Perl5
no warnings 'experimental::signatures';
use feature qw(say signatures);
sub Y($f) { sub {$f->(Y($f))->(@_)} } # Y combinator w/ recursive
$s = sub ($n) {$n and $n + $s->($n - 1)}; # calc series recursive
say Y(sub ($f) { $s })->(100);
151:デフォルトの名無しさん
19/12/07 01:33:07.92 7zlttp1T.net
>>101 Perl5
use List::Util 'sum';
print sum 1..100;
152:デフォルトの名無しさん
19/12/07 03:39:00.62 GrS1V5od.net
お題
1以上、20以下の整数がランダムに10個与えられます。
与えられた整数の集合から1つ以上の整数を抜き出し、残った整数の集合からまた1つ以上の整数を抜き出します。
この時2つの抜き出した整数の集合のそれぞれの和が同値であり、かつ最小のものを出力して下さい。
例
与えられた整数の集合 : 2 3 4 5 6 7 8 9 10 11
期待される出力 : 5
この場合、与えられた整数の集合から
「2,3」「5」の整数を抜き出しています。
153:デフォルトの名無しさん
19/12/07 03:47:40.06 GrS1V5od.net
元ネタ
スレリンク(news4vip板:18番)
154:デフォルトの名無しさん
19/12/07 04:00:27.84 G4M88S/c.net
・「同値」の意味が謎
・解がない時の処理が謎(e.g. input: 9 10 11 12 13 14 15 16 17 18
・同値の使い方が間違っているのでそもそも「集合」の元が重複しないものとしてよいものか悩ましい
155:デフォルトの名無しさん
19/12/07 04:23:11 GrS1V5od.net
>>152
同値は単に同じ(等しい)値という意味で使っています。
解が存在しない場合は「ないよー」と出力して下さい。
与えられる整数は重複する可能性があります。
156:デフォルトの名無しさん
19/12/07 05:16:02 HQTo5ewj.net
ならば結局こういうことでよいのかね.
もとのスレを見ても出題者本人の主張が不明瞭なうえに二転三転していて気持ち悪いが.
与えられた数列を {a_n} に対して,
{a_n} の異なる項からなる任意の部分列の内それぞれの和が等しくなるものを {b_n}, {c_n} として
Σb_n (= Σc_n) が最小となる {b_n}, {c_n} を求めよ.
そして今回は b, c の項数をそれぞれ 2, 1 に限るものとすると.
157:デフォルトの名無しさん
19/12/07 05:38:25.75 GrS1V5od.net
もう少し例を載せるべきでした。
すいません。
例えば
>>152
さんの解が存在しないとしているものですが、
9 10 11 12 13 14 15 16 17 18
を与えられた場合の出力は
21となります。(10,11と9,12)
入力が
1 1 1 1 1 1 1 1 1 1
の場合の出力は
1となります。(1と1)
158:デフォルトの名無しさん
19/12/07 06:50:35.03 HQTo5ewj.net
>>155
なるほど、概ね理解した
159:デフォルトの名無しさん
19/12/07 09:57:16.56 WrheNqRo.net
>>150
取り敢えずRで力任せ。これでも瞬時に終わるので工夫の必要なし。
URLリンク(ideone.com)
160:デフォルトの名無しさん
19/12/07 15:33:28.08 WrheNqRo.net
実は>>157は「残った整数の集合から」の条件を忘れていて、元の集合から抜き出すと
勘違いして書いてしまったプログラム。
が、改めて条件を考えてみると、既に抜き出された数と同じものを選んでしまうのは、
「片方の部分集合の要素が2個以上で、もう片方の部分集合の要素が3個以上の場合」(A)
に限られる。例えば、2+9=11と2+3+6=11。この場合、2回選んでしまった2を取り除いた
部分集合は、和9=9と3+6=9が11より小さく、かつ(A)の場合に該当しないので2回選んで
しまった数は存在しない。
だから結局、>>157のプログラムのままで正解が得られることになる。
161:デフォルトの名無しさん
19/12/07 16:28:15.65 tj55yZgB.net
へなへななお題へなへなな回答
162:デフォルトの名無しさん
19/12/07 20:45:08.83 HU7sPj+p.net
>>150
この問題から関連して考えてたんだけど
5を
1 1 1 1 1
1 1 1 2
1 1 3
1 2 2
1 4
2 3
5
このように分割する方法は7通り、10だと42通りあった
数が与えられたとき何通りの分け方があるかどうやって計算するのか考えてたけど
そんな簡単な問題ではないようだった
とりあえず数が与えられたら上の例のように全ての分け方を列挙する
というのを問題としてみる
163:デフォルトの名無しさん
19/12/07 22:36:30.68 WrheNqRo.net
>>160
Rでお決まりの再帰呼び出し。
URLリンク(ideone.com)
164:デフォルトの名無しさん
19/12/07 23:22:48 eT8T+vHJ.net
分割数でググれば考え方いっぱい出てくるよ
165:デフォルトの名無しさん
19/12/08 13:36:47.70 jvur7pXC.net
>>160
C++
URLリンク(ideone.com)
166:デフォルトの名無しさん
19/12/08 13:57:09.43 FOSx0Jk/.net
>>154
最後の文はどこから出てきたの?
167:デフォルトの名無しさん
19/12/08 13:58:38.12 xElyalHo.net
>>164
元のスレ
168:デフォルトの名無しさん
19/12/08 14:21:04.90 FOSx0Jk/.net
しらんがな
169:デフォルトの名無しさん
19/12/08 14:22:15.55 FOSx0Jk/.net
その制限が無い方がアルゴリズムとしておもしろい
制限があるとつまらなすぎる
170:デフォルトの名無しさん
19/12/08 17:19:46.37 xElyalHo.net
知らんがなって
なら聞くなアホ
171:デフォルトの名無しさん
19/12/08 17:53:26.22 FOSx0Jk/.net
すまん
不満は>>150に言ったつもり
そんな重要な事を省略すんなって
172:デフォルトの名無しさん
19/12/08 19:17:22.87 DgjgjjxW.net
別に項数の制限はつけていませんよ
「項数の制限が無い」という事を省略したのに怒っているのならすいません。
ですが制限があるのなら普通に問題文に加えますし、別に書くほどの事では無いかな~と
173:デフォルトの名無しさん
19/12/08 19:37:55.14 KCeBLlvA.net
>>150
URLリンク(ideone.com)
C++。総当たりです。スカイレークのi7で12秒くらいかかります。
久しぶりにまじめに総当たりを書いた気がしました。
174:デフォルトの名無しさん
19/12/08 19:44:34.35 KCeBLlvA.net
>>150
URLリンク(ideone.com)
オマケで、答えが見える版を置いておきます。C++。
175:デフォルトの名無しさん
19/12/08 20:22:49.16 KCeBLlvA.net
ちなみにオーダーは大体O(N!)位です。(笑
176:デフォルトの名無しさん
19/12/08 20:35:11.71 KCeBLlvA.net
ギャグですけど、並列化は比較的簡単なのでそれで時間短縮はできます。
底の値をシェアードにすると早く終わります。Nになってると思うんだけど。
177:デフォルトの名無しさん
19/12/08 20:48:51.01 KCeBLlvA.net
一回を関数に切り出して実行した場合、
一回のイテレーションが大体100回のループに収まるはずなのでザクザクおわります。
多分。
178:デフォルトの名無しさん
19/12/08 20:49:16.37 KCeBLlvA.net
一回を関数に切り出して実行した場合、
一回のイテレーションが大体100回のループに収まるはずなのでザクザクおわります。
多分。
179:デフォルトの名無しさん
19/12/08 20:59:32.19 KCeBLlvA.net
ぐあ、重複した・・・。
180:デフォルトの名無しさん
19/12/08 21:17:04.79 FKbRmDMb.net
>>150
これは問題の設定がつまらないな。1~20の中から10個を選んで元の集合を作るから、
結果に1個か2個の和しかほとんど現れず、集合の最初の方をパッと見ただけで
暗算でも分かってしまう。1~5000の中から10個を選ぶ設定にすると、
結果がなしだったり、3個の和と
181:4個の和だったり、2個の和と6個の和だったり、 変化に富んで面白くなる。https://ideone.com/kmihyT 例えば、リンク先にある 入力: [63, 70, 269, 949, 1337, 2670, 3538, 3764, 4183, 4320] 出力: Σ[3764, 4183] = Σ[63, 70, 269, 1337, 2670, 3538] = 7947 なんてパッと見では思いつかないから、コンピュータに探させる意義がある。
182:デフォルトの名無しさん
19/12/08 21:27:36.39 KCeBLlvA.net
>>178
異様に早いなーと思ったら、言語にコンビネーションあるんかいな。
裏山シー。
183:デフォルトの名無しさん
19/12/08 22:01:27.05 h14g0YSH.net
サンプルだから人間が簡単に検証できるようにしてるんでしょ
普通それぐらいはわかりそうなもんだけど、>>165みたいに項数だと思う奴とか>>178みたいにイチャモンつける奴とか世の中広いわw
184:デフォルトの名無しさん
19/12/08 22:35:33.47 FKbRmDMb.net
>>180
そんなことは分かっているよ。だから、お題通りの1~20の場合も>>157でちゃんと回答した。
その上で、もっと面白い場合の追加を提案してみただけ。
185:デフォルトの名無しさん
19/12/09 00:06:03 QbXWD96q.net
>>150
N!より速い方法ある?
186:デフォルトの名無しさん
19/12/09 00:53:44 rq2SBWAq.net
>>182
動的計画法?
187:デフォルトの名無しさん
19/12/09 01:15:42 2eMu76Ef.net
URLリンク(ideone.com)
全ての和を計算して並べ替えるだけ
多分最も愚直な方法
188:デフォルトの名無しさん
19/12/09 01:57:50 2eMu76Ef.net
bit演算で面倒なことやってたけどpairっての使えば良かったのか
189:デフォルトの名無しさん
19/12/09 02:04:04.39 vzskLW//.net
>>150 URLリンク(ideone.com)
By PyPy、 ノーマルpythonでは力業の(N=20)が8秒くらいかな、
力業が 2^N * N
最小値だけなら、N*数列の合計 = N^2 * 数の平均(/2) ででる(みたい?)
(自信ががないDP解)
190:デフォルトの名無しさん
19/12/09 02:51:44 ElWitvQQ.net
>>180
日本語が読め無い馬鹿発見
191:デフォルトの名無しさん
19/12/09 04:54:54.63 wE9bCkNR.net
>>181
わかってたら
> これは問題の設定がつまらないな。
なんていう物言いにはならんだろ
>>187
夜中まで必死だな…
何に必死なのかよくわからんけどw
192:デフォルトの名無しさん
19/12/09 05:00:22.33 ElWitvQQ.net
必死なのはお前だろ
お前一人だけ日本語すらまともに読めてない馬鹿だって気づけよ
193:デフォルトの名無しさん
19/12/09 06:12:33.29 wE9bCkNR.net
うわっ、アホが無駄に絡んできたよw
194:デフォルトの名無しさん
19/12/09 06:42:21 QCNDYaVq.net
明け方からどんだけ必死なんだよ
以降、劣等感の塊のID:wE9bCkNRくんが全レスしてくれるってよ!
195:デフォルトの名無しさん
19/12/09 06:46:34 PLlkWb6P.net
こいつ少し上の方でレスバしてたアホやろ?
さんざん馬鹿にされて悔しい思いしたから早朝にちょろっと顔出してるんやろ
196:デフォルトの名無しさん
19/12/09 07:23:51 RwnUxfkW.net
単芝ガイジ君、情けなさ過ぎて草
197:デフォルトの名無しさん
19/12/09 12:30:02.62 G+LM1RHL.net
>>192
自己紹介乙ww
198:デフォルトの名無しさん
19/12/09 15:19:21 gONUrOAf.net
URLリンク(ideone.com)
C++面白いな
199:デフォルトの名無しさん
19/12/09 15:48:30 gONUrOAf.net
(sum[i].second & sum[i + 1].second) == 0
この比較はいらないのかな
これが重なってるならより小さい重なってない組合せが必ず存在するか
200:デフォルトの名無しさん
19/12/09 21:07:53.73 l5WymCFL.net
お題:2つの素数(2つは同じでもよい)の積で表される数は半素数と呼ばれる。
1万以下の半素数をすべて表示せよ。
201:デフォルトの名無しさん
19/12/09 21:20:18.06 QbXWD96q.net
int prime[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,91};
202:デフォルトの名無しさん
19/12/09 21:22:25.12 QbXWD96q.net
91じゃなかった
203:
19/12/09 21:29:40.49 ZryjKmS+.net
>>197
スレリンク(tech板)
2625個、でしょうか?
204:
19/12/09 21:35:00.48 ZryjKmS+.net
やりなおします
>>197
スレリンク(tech板:62番)
2625個
205:デフォルトの名無しさん
19/12/09 22:42:10.29 QbXWD96q.net
ふるいで5000以下の素数を求めて
2重ループで列挙
が速いかな
206:デフォルトの名無しさん
19/12/09 22:48:18.91 l5WymCFL.net
>>201
正解。Rでエラトステネスの篩を使って求めるプログラムを一応貼っておく。
URLリンク(ideone.com)
207:デフォルトの名無しさん
19/12/10 06:55:28 cIwr+d9F.net
>>197 J
(smoutput~ 2=#@q:)@>>:i.10000
4
6
9
10
...
9991
9993
9995
9997
9998
208:デフォルトの名無しさん
19/12/10 07:06:32 qBy9puuu.net
問題の一区分である素数判定、並びに範囲内の素数列挙するコード
URLリンク(ideone.com)
~/bin/is_prime.exe 2 10000
とやれば1万までの素数が列挙され、
~/bin/is_prime.exe 2017
と1つ引数与えればそれだけ判定
引数無いとURLの用にOFする限界付近まで全部
1万までの素数出して、それパイプで処理したら楽かなと思った
209:デフォルトの名無しさん
19/12/10 08:49:47 92MPgAr5.net
5000までの素数で十分だって言ってるのに
210:デフォルトの名無しさん
19/12/10 09:32:39 WOcT9SPT.net
>>197
お題:このお題の回答を論理式で表すとどうなるでしょうか。
211:デフォルトの名無しさん
19/12/10 09:53:12.04 gKYhlG5V.net
>>207
それはプログラミングのお題なのか?
212:デフォルトの名無しさん
19/12/10 13:07:12.61 bINIS1ks.net
また数(ry
213:デフォルトの名無しさん
19/12/10 13:10:37.69 FDwwVytW.net
出題者はいろんな言語の表記方法を知りたいだけか?
数学やアルゴリズム的には全然おもしろくないのばかり
214:デフォルトの名無しさん
19/12/10 15:09:39 zIz8I18p.net
>>197
URLリンク(ideone.com)
C++。>>205 の素数判定パクりました。楽すぎ。
と、思ったらこれ、俺の回答間違ってる。
215:デフォルトの名無しさん
19/12/10 15:15:40 zIz8I18p.net
>>197
URLリンク(ideone.com)
C++。こうかいな。
216:デフォルトの名無しさん
19/12/10 16:37:43 hI+yeapE.net
>>210
お前が面白い問題出せばいいじゃん
たぶん誰も解かないだろうけどwww
217:デフォルトの名無しさん
19/12/10 17:22:00.22 Ajx0JUvY.net
過去スレからお題引っ張りたいんだけど、有料会員じゃないからむりぽ
218:デフォルトの名無しさん
19/12/10 17:45:48.68 qBy9puuu.net
2chscとかいうのが無料サルベージに向いていると聞いたことがある
219:デフォルトの名無しさん
19/12/10 17:47:09.91 ClyY78bX.net
>>214
普通のブラウザで見ても出ないんだっけ?
220:デフォルトの名無しさん
19/12/10 18:57:11.15 W3sLZ8lM.net
>>213
問題を出して人に解かせるのはあまり好きじゃない
解く方が好き
221:デフォルトの名無しさん
19/12/10 19:01:43.67 W3sLZ8lM.net
過去の良問があればおしえろください
222:デフォルトの名無しさん
19/12/10 19:30:15.36 Ajx0JUvY.net
>>216
見れた( ゚Д゚)
223:デフォルトの名無しさん
19/12/10 20:07:19.37 ClyY78bX.net
>>219
そうか。普通のブラウザだとエロ広告が激しく付くからそれで過去スレ見せる料金なんとかしてるのかもね。
>>217
そんなあなたにとっておきのお題をひとつ。
お題: 面白いお題を作れ。
224:デフォルトの名無しさん
19/12/10 20:25:27.92 6QYDHDQi.net
じゃあ四角形を全部違う大きさの円で埋める
225:デフォルトの名無しさん
19/12/10 21:05:07.05 0RQ6ozIG.net
>>207
答えは高々有限個の整数でしかないんだから論理式にはならない
226:デフォルトの名無しさん
19/12/10 22:54:03 ZImsJVBi.net
>>210
まあ、そんな所だね。このスレは競技プログラミングじゃないから、アルゴリズムや
パフォーマンスの追求よりは、各自が使う言語で楽な書き方ができるのを披露する方が多い。
>>203も可変長ベクトルへの再代入の繰り返しという非効率なことをやっているが、
自前のforループ不要で簡潔に書けるし、篩い落とす操作を忠実に表してもいる。
昔と違ってこれでも実用な速度で動くので、色々な書き方ができるようになった。
C#, Julia, PowerShellでも類似の書き方ができる(>>206の通り素数は5000までにした)。
C# URLリンク(ideone.com)
Julia URLリンク(ideone.com)
PowerShell URLリンク(ideone.com)
R URLリンク(ideone.com)
C#のstatic void Main()の中だけを抜き出したC#スクリプトも作って、それぞれの実行時間を
PowerShellの
measure-command {semiprime.exe}
measure-command {csi semiprime.csx}
measure-command {julia semiprime.jl}
measure-command {semiprime.ps1}
measure-command {rscript semiprime.R}
で計測すると、C#を1倍として、R 3.40倍、C#スクリプト 10.1倍、Julia 16.6倍、
PowerShell 199倍となった。PowerShellだけは延々と待たされ実用的でない。
他の4つはすぐに終わるが、右へ行くほどややもたつく。Rは遅いと言われているが、
スクリプト言語の中ではかなり速い。
227:デフォルトの名無しさん
19/12/10 22:54:55 ZImsJVBi.net
>>217
じゃあ、これ解いてみる?
整数x, y, z, kに関する方程式x^3 + y^3 + z^3 = kの解を、k = 1から100までの場合について求めよ。
URLリンク(engineer.fabcross.jp)
228:デフォルトの名無しさん
19/12/10 23:25:26 qBy9puuu.net
k = 64, z = 4の時
任意の整数 を+-反転した組が x,yの解であり、その個数は無限
229:デフォルトの名無しさん
19/12/10 23:27:52 W3sLZ8lM.net
なぜ
k=1, z=1
じゃない?
230:デフォルトの名無しさん
19/12/10 23:47:24 qBy9puuu.net
あとから追加されそうな条件の
仮に全部0以上の整数とした時に
5*5*5>125,100>4*4*4のメモ代り
231:デフォルトの名無しさん
19/12/10 23:59:19 RjwvfByt.net
k=1から100のどれかに対してじゃなくて、
k=1から100のそれぞれすべてに対して求めるんじゃろ…
232:デフォルトの名無しさん
19/12/11 00:11:02 10jfhd7e.net
URLリンク(ideone.com)
10000000以下で0.04秒
C++は速い!
233:デフォルトの名無しさん
19/12/11 00:13:04 10jfhd7e.net
C#の10000以下より速い!
234:デフォルトの名無しさん
19/12/11 00:30:48 10jfhd7e.net
>>224
k=1の時からいきなり難しいなあ
235:デフォルトの名無しさん
19/12/11 00:40:32 10jfhd7e.net
>>224
ん?
解を全て求めるのではなく
各kに対して1個解を求めればいいの?
236:デフォルトの名無しさん
19/12/11 09:11:06 aadkbL3F.net
>>197 seq, factor, awk
seq 10000 | factor | awk 'NF == 3'
237:デフォルトの名無しさん
19/12/11 09:24:12 ztpKOEip.net
>>233
awkのとここれどういう意味?わたし女騎士だけど教えて!
238:デフォルトの名無しさん
19/12/11 10:31:05 dG8VWZ74.net
>>234
女騎士?
まあいいや。NFが3になる行だけ出力するんだよ。NFはフィールド数ね。
区切り文字がデフォルトのままだと空白文字で区切った時の個数。例えば行に a b c って入ってたら 3 になる。
239:デフォルトの名無しさん
19/12/11 12:05:48.97 dG8VWZ74.net
>>197
Kotlin
URLリンク(paiza.io)
240:デフォルトの名無しさん
19/12/11 13:38:08.03 ivhCTlPt.net
>>233
素因数分解しちゃえばいいのか
サイコー
241:デフォルトの名無しさん
19/12/11 13:42:56.98 QbvBtpFM.net
>>233
やってみたら
--- Data stack:
って出力が10000行並ぶだけなんだけど…
なんかオプションいる?
242:デフォルトの名無しさん
19/12/11 14:03:27.78 jagg9gKF.net
普通にできたけど
何のシェル使ってるの?
243:デフォルトの名無しさん
19/12/11 14:35:31 QbvBtpFM.net
bash。macで。
244:デフォルトの名無しさん
19/12/11 14:38:38 jagg9gKF.net
俺もbashもだけど
seq 100くらいなら動くの?
245:デフォルトの名無しさん
19/12/11 15:36:13.32 QbvBtpFM.net
$ seq 3 | factor で止めてawk飛ばすと以下の出力です。
Factor 0.98 x86.64 (1886, heads/master-211d69561a, Jul 2 2018 17:46:19)
[Clang (GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.29))] on macosx
IN: scratchpad
--- Data stack:
1
IN: scratchpad
--- Data stack:
1
2
IN: scratchpad
--- Data stack:
1
2
3
IN: scratchpad
246:デフォルトの名無しさん
19/12/11 16:49:11 1E1+DBtw.net
>>233
約数が3個な数を列挙ってこと?
4の約数は1,2,4の3個だけど
6の約数は1,2,3,6の4個だよ
247:デフォルトの名無しさん
19/12/11 17:02:16.44 hUZCfnLs.net
factorみりゃわかんだろ……
素因数の数だっつーの
248:デフォルトの名無しさん
19/12/11 18:01:04.84 10jfhd7e.net
素因数の数が3?
249:デフォルトの名無しさん
19/12/11 18:12:47.35 ivhCTlPt.net
こんな具合だろ
seq 100 | ~/bin/factorization.pl| awk -F, "NF==2" | ~/bin/align.pl "=" 4 2,2
6 2,3
9 3,3
10 2,5
14 2,7
......
9995 5,1999
9997 13,769
9998 2,4999
250:デフォルトの名無しさん
19/12/11 19:33:15.23 ReYSFEXH.net
>>224
とりあえず7個を除いて出来た
ここからが長いのかな?
251:
19/12/11 19:46:53.70 6E3wj7zP.net
>>243
そうそう、それに
8 の約数は 1, 2, 4, 8 の 4 個だけれども、これは >>197 のいう半素数ではないんですよね
>>233 は間違っていますね
252:デフォルトの名無しさん
19/12/11 20:44:53.42 WjX/lCwK.net
QZがそういうなら合ってるんじゃないの?
253:デフォルトの名無しさん
19/12/11 20:51:31.74 7CYZ1E2N.net
反面教師?
254:デフォルトの名無しさん
19/12/11 20:54:12.94 7CYZ1E2N.net
お題
1兆以下の半素数の個数を求めよ
これだとスクリプト系は無理かな?
255:デフォルトの名無しさん
19/12/11 21:07:14.36 ivhCTlPt.net
素数判定で書いた
long long int のC言語でも100億ぐらいを上限でサポートしてる
100億以上の判定は遅くてより優れた判定アルゴリズムが必要だからだ
推定:C系、優れた判定、現代スペックのPCが必要
256:デフォルトの名無しさん
19/12/11 21:11:52.35 7CYZ1E2N.net
素数判定する必要は無いよ
257:
19/12/11 22:08:07.74 6E3wj7zP.net
>>252
>long long int のC言語でも100億ぐらいを上限でサポートしてる
極めて不正確ですよ
C99 後は uint64_t の最大値は 1844'6744'0737'0955'1615=約 1844 京ですね
それに実際に割ってみる方法以外には素数判定があるとでも?そんなものは存在しませんね
258:デフォルトの名無しさん
19/12/11 22:15:54.42 10jfhd7e.net
何年も前に素数の数を数え時は
シングルスレッドのコードで
5000億までで1時間弱
だから>>251もそのくらいで求まるはず
259:デフォルトの名無しさん
19/12/11 22:46:17.34 10jfhd7e.net
>>254
詳しそうなので>>251をよろしく!
260:デフォルトの名無しさん
19/12/11 23:52:51.14 VagVWTF0.net
知り合いから、「子供の宿題なんだけど解けない」と言われた。
「正方形13枚と正三角形を何枚か組み
261:合わせて、凸多面体を作るとき、その頂点数は A 個または B 個である。ただし一つの頂点には同じ枚数の面が集まっているものとし、A < B とする。」 途中経過を適宜表記しつつ解くプログラムを!
262:デフォルトの名無しさん
19/12/12 00:28:15.32 UvCIGzud.net
A=19
B=38
263:デフォルトの名無しさん
19/12/12 00:32:27.86 UvCIGzud.net
>>247
3乗して64bitに収まる範囲全て調べたけど
7個から減らなかった
264:デフォルトの名無しさん
19/12/12 00:35:14.01 UvCIGzud.net
7個になるまで9秒
3乗して64bitに収まる範囲検索2031秒
265:デフォルトの名無しさん
19/12/12 00:42:16.14 UvCIGzud.net
>>257
プログラミングの宿題じゃないはずなので
解き方は他の板で聞いて
266:デフォルトの名無しさん
19/12/12 00:44:42.94 UvCIGzud.net
k=30, 33, 42, 52, 74, 75, 84
の時がわからん
267:デフォルトの名無しさん
19/12/12 06:06:40.97 wmbGd8tm.net
>>254
f(x) = 1 if x is prime
f(x) = 0 otherwise
なる f: R -> R が存在しないってなんで言い切れんの?
頭悪すぎ
268:デフォルトの名無しさん
19/12/12 07:32:31.88 UvCIGzud.net
>>254も>>263も頭悪すぎだ
269:デフォルトの名無しさん
19/12/12 07:40:34.14 UvCIGzud.net
>>252
素数判定は不要
>>254
uint64_tの上限じゃなくて素数判定可能な範囲
また、実際に割ってみる以外の方法も色々と存在する
>>263
fは存在する
あなたが書いた通りの定義そのままをfとすれば良い
fの存在と素数判定の方法が存在するかどうかは無関係
270:デフォルトの名無しさん
19/12/12 07:48:51.75 wmbGd8tm.net
>>265
お前も馬鹿だな
簡単な関数で f が定義できるならそれはそのまま簡単な計算で素数判定ができることに他ならない
こちらはそんな方法が存在するといっているわけではなく、無配慮にそんなものは存在しないと一刀両断する数学的リテラシーの無さを指摘しているだけなんだが
271:デフォルトの名無しさん
19/12/12 08:00:21.80 UvCIGzud.net
>>263
「簡単な関数でfが定義できる」
非常に重要な言葉を後付けだし
これが最初からあったとしても、
単に簡単に素数判定可能可能を言い換えただけの
何の意味もないレス
リテラシーの無さの指摘の方法が頭が悪い
272:デフォルトの名無しさん
19/12/12 08:08:21.73 UvCIGzud.net
現代の技術で言えば
特殊な形であれば高速に判定する方法はある
特殊な形でなければ高速に判定する方法は見つかっていない
実際に割ってみる以外の判別方法は存在する
273:デフォルトの名無しさん
19/12/12 08:25:56.28 UvCIGzud.net
なんでNやZじゃなくてRにしたのか気になる
274:デフォルトの名無しさん
19/12/12 12:56:52.27 wmbGd8tm.net
文脈無視して揚げ足取ってて草
こいつ関数は全射しか存在しないとでも思ってんのか
275:デフォルトの名無しさん
19/12/12 14:55:31.47 2PtCb74v.net
単純な疑問だよ
なんかこだわりとか深い意味とかあるのかと
「実数が素である」とか書かれると、
素数じゃない別の意味を指してると思うわけで
揚げ足取られたと思ったってことは
ミスったと思ったんだよね?
276:デフォルトの名無しさん
19/12/12 15:35:29.90 zRSUYply.net
いつもの連投アスペ君じゃん
相手すんなよ
277:デフォルトの名無しさん
19/12/12 17:58:27.01 2C/x7O5N.net
論破されて捨て台詞
の典型でした
278:デフォルトの名無しさん
19/12/12 18:19:15.31 RcQND7/k.net
5chリテラシーが低いやつもだいぶ減ってはきてるが
このスレはちょいちょい出てくるよなぁ
279:デフォルトの名無しさん
19/12/12 18:27:18.35 cffvEFbc.net
>>263を書いておいて良くいうよ
280:デフォルトの名無しさん
19/12/12 18:39:51.55 JPTMcftT.net
論破を禁止します
281:デフォルトの名無しさん
19/12/12 19:05:41.21 f2lx0DlC.net
まーたロンパンジーが湧いてんのかよ
282:デフォルトの名無しさん
19/12/12 19:12:35.43 cffvEFbc.net
リテラシー君
よほど悔しかったのかな?
283:
19/12/12 19:15:24.80 bwSkQtN1.net
>>256
単に上限値を増やしただけのお題なんて糞だと思います
284:
19/12/12 19:17:30.13 bwSkQtN1.net
>>265
>また、実際に割ってみる以外の方法も色々と存在する
私の初等的な教科書にはウィルソンの定理の証明が載っていました、>>254 はちょっと勇み足でしたね
>>266
>無配慮にそんなものは存在しないと一刀両断する数学的リテラシーの無さ
まあ、認めましょう
285:デフォルトの名無しさん
19/12/12 19:18:20.83 cffvEFbc.net
>>279
そう思うってことは上限値以外の差がわからんて事だね
決定的な違いがある
286:デフォルトの名無しさん
19/12/12 20:55:40.30 uIjgN9ep.net
お題:
(A) 階乗の下z桁がすべて0となるような最小の自然数を、z = 1, 12, 123, 1234, 12345,
123456, 1234567, 12345678, 123456789の各場合について求めよ。存在しないときは
そう表示せよ。
(B) (A)の「下z桁がすべて0となる」という条件を「0である桁がz個となる」に置き換えて解け。
(A)はちょっと考えれば簡単に解ける。(B)はどうか知らない。多桁整数計算ができるJuliaでは
z = 12345までは力任せでも求められたが。
287:デフォルトの名無しさん
19/12/12 21:21:19.99 qa03h3dy.net
5で割っていく感じだから
整数無視して無限に割ると
おおまかに4で割った感じの数0が並ぶ
126! は4で割って31ぐらい
288:デフォルトの名無しさん
19/12/12 22:14:34.83 WrPVO4K2.net
連投論破野郎が論破されてて草
289:デフォルトの名無しさん
19/12/12 23:15:10.76 UvCIGzud.net
(A)だけ C++
URLリンク(ideone.com)
290:デフォルトの名無しさん
19/12/12 23:18:50.66 UvCIGzud.net
(B)は実際に下限から順番に計算していかないとダメじゃないか?
291:デフォルトの名無しさん
19/12/12 23:52:01.98 UvCIGzud.net
n ! のゼロの個数は大雑把にはこのくらい
log_10(n !) / 10 + n * 9 / 40
逆算すれば大体の値はわかる
でも最小値だから正確に求めるのには使えない
292:デフォルトの名無しさん
19/12/13 18:36:38.11 0Lb/VhZx.net
[お題]
今月(2019/12)の13日は金曜日。
開始年月と終了年月が与えられる。年は西暦、年月区切りは"/"。
開始年月一日から終了年月末日の間で"13日の金曜日"は何回あるか。
現在のグレゴリオ歴ルールで、終了年月末日まで変わらないとする。
制約: 1970 <= 年 <= 300億, 1 <= 月 <= 12, 開始年月 <= 終了年月
1) 2019/1 2019/12 --> 2 // 今年は9月と12月が該当
2) 1980/1 2012/12 --> 57
3) 213456/8 453212/4 --> 412380
4) 2000/1 2399/12 -->?
5) 2000/11 2800/9 -->?
6) 123456789/11 7301177081/10 -->?
7) 1970/1 30000000000/12 --> 51599996613
※数十万年程度だと力技だけで回っちゃうので、難易度調整で300億に。
wikiの"グレゴリオ歴#暦法" URLリンク(ja.wikipedia.org)
293:デフォルトの名無しさん
19/12/13 20:06:08.48 KAf60mjk.net
300億にしても年の曜日は14パターンしか無いのであっという間に解ける気が…
曜日は400年周期だから400年分求めればあとは割り算するだけかな?
294:デフォルトの名無しさん
19/12/13 20:15:02.20 QuzLYYNu.net
C++
URLリンク(ideone.com)
295:デフォルトの名無しさん
19/12/13 20:16:51.71 QuzLYYNu.net
>>289
今日や
296:らないとダメだよ
297:デフォルトの名無しさん
19/12/13 20:32:32.43 7JZ8Vcg3.net
>>288
ずるいやり方だが、取り敢えずPowerShellに
1..12 |? {([DateTime]"2000/$_/13").DayOfWeek -eq "Friday"}
1..12 |? {([DateTime]"2400/$_/13").DayOfWeek -eq "Friday"}
と打ち込んでみると、
10
10
と表示され、2000年と2400年の13日の金曜日は10月で一致する。
これと閏年調整のパターンが400年周期であることを組み合わせると、
13日の金曜日の出現パターンも400年周期になることが分かる。
だから、400年分の表を作ってしまえば、遅いPowerShellでも余裕で解ける。
URLリンク(ideone.com)
--- 実行結果 ---
2019/1 2019/12 -> 2
1980/1 2012/12 -> 57
213456/8 453212/4 -> 412380
2000/1 2399/12 -> 688
2000/11 2800/9 -> 1375
123456789/11 7301177081/10 -> 12345678901
1970/1 30000000000/12 -> 51599996613
298:デフォルトの名無しさん
19/12/13 20:57:37.29 7JZ8Vcg3.net
>>285
正解。例によってRで簡潔に書いた解答例: URLリンク(ideone.com)
>>287
やっぱり無理か。ちなみに、Juliaでz = 12345まで力任せで求めるプログラム
URLリンク(ideone.com)
--- 実行結果 ---
階乗の0である桁が1個になる最小値は5です。
階乗の0である桁が12個になる最小値は37です。
階乗の0である桁が123個になる最小値は299です。
階乗の0である桁が1234個になる最小値は2414です。
階乗の0である桁が12345個になる最小値は20177です。
299:デフォルトの名無しさん
19/12/13 21:27:38.91 QuzLYYNu.net
>>293
>>287の式に20177を入れると12349.7
かなりいい線行ってる
300:デフォルトの名無しさん
19/12/13 22:22:01.90 QuzLYYNu.net
123456個は存在しない
301:デフォルトの名無しさん
19/12/13 23:21:15.30 QuzLYYNu.net
123457桁になる 30484!
から
下位に0が123457個続く 493840!
までの間に存在しない事を示せば
存在しない証明になりますが
もっと範囲を絞った証明は出来ないですかねえ
確率的には>>287の付近だけ調べれば良いんですが...
302:デフォルトの名無しさん
19/12/13 23:47:17.94 r78PztnN.net
全部調べる感じでぶん回してるけど1234567までが長いお(´・ω・`) (123456は>>295の言う通り出なかった)
1時間ぶん回して900000!まで行ったが…
303:デフォルトの名無しさん
19/12/13 23:49:02.36 r2S5lo/C.net
数学でワープできる分手計算のほうが早い
304:デフォルトの名無しさん
19/12/13 23:49:38.96 QuzLYYNu.net
kwsk
305:デフォルトの名無しさん
19/12/13 23:50:22.63 r2S5lo/C.net
>283
306:デフォルトの名無しさん
19/12/13 23:52:09.33 QuzLYYNu.net
(A)は解決済み
(B)の話
307:デフォルトの名無しさん
19/12/13 23:53:42.34 QuzLYYNu.net
数学で絞れるのは>>296くらいかと
308:デフォルトの名無しさん
19/12/13 23:56:32.85 QuzLYYNu.net
下限の n! を計算するのは速い
そこから順番に1個ずつnを増やしていって
0を数えていかないとならない
見つからなければ上限までずっと
309:デフォルトの名無しさん
19/12/13 23:59:51.46 QuzLYYNu.net
ちなみに私、東大の数学科卒なんで
310:デフォルトの名無しさん
19/12/14 00:07:59.08 ruM/1CH5.net
ワープ
(* 4 1234567) 4938268
(/ 4938268 5.0) 987653.6
(/ 987653 5.0) 197530.6
(/ 197530 5.0) 39506.0
(/ 39506 5.0) 7901.2
(/ 7901 5.0) 1580.2
(/ 1580 5.0) 316.0
(/ 316 5.0) 63.2
(/ 63 5.0) 12.6
(/ 12 5.0) 2.4
(+ 987653 197530 39506 7901 1580 316 63 12 2) 1234563
311:デフォルトの名無しさん
19/12/14 00:14:15.42 03SKvnKb.net
>>305
だからそれは>>282の(A)の話じゃろ…
312:デフォルトの名無しさん
19/12/14 00:15:48.22 ruM/1CH5.net
Bの話か
313:デフォルトの名無しさん
19/12/14 02:58:36 03SKvnKb.net
階乗の0である桁が1234567個になる最小値は1542987です。
お、出た…4時間か
314:デフォルトの名無しさん
19/12/14 03:55:22 DhSlagHw.net
お題: 目覚まし時計の現在時刻とアラーム時刻が入力されるので、待機時間を出力しなさい
例:
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時間 = 06:00
現在時刻 = 22:00
アラーム時刻 = 04:00
待機時間 = 06:00
315:デフォルトの名無しさん
19/12/14 09:12:53.23 ruM/1CH5.net
>>309
これだな
URLリンク(paiza.io)
~/bin/sleep.pl
316:10:00 2909 00:48:29 のように使ってる
317:デフォルトの名無しさん
19/12/14 09:59:37.97 Lp9CT80F.net
>>304
進振り何点だった? 連投アスペ君
318:デフォルトの名無しさん
19/12/14 22:12:52.90 8CJijD11.net
>>309
この手の処理はPowerShellが得意だな。
function WaitingTime($now, $alarm)
{
$wait = [DateTime]$alarm - [DateTime]$now
if ($wait -lt 0) {$wait += [TimeSpan]"12:00" + [TimeSpan]"12:00"}
"現在時刻 = $now"
"アラーム時刻 = $alarm"
"待機時刻 = $wait"
""
}
WaitingTime 10:00 16:00
WaitingTime 22:00 4:00
WaitingTime 12:34:56 1:23:45
--- 実行結果 ---
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時刻 = 06:00:00
現在時刻 = 22:00
アラーム時刻 = 4:00
待機時刻 = 06:00:00
現在時刻 = 12:34:56
アラーム時刻 = 1:23:45
待機時刻 = 12:48:49
319:デフォルトの名無しさん
19/12/15 00:16:05 K3IRPfAN.net
>>312
キャスト出来るんだな
楽そう
320:デフォルトの名無しさん
19/12/15 06:09:40 K3IRPfAN.net
お題: あなたは研究所で助手をしています
ある日、博士からこんな手紙が届きました
助手よ。この数値の名前を教えて欲しい
16776960
あなたは博士に返事を書こうと思います
その返事の内容をお答えください
321:デフォルトの名無しさん
19/12/15 07:44:00 VJoyKt1C.net
>>314 直感
Yellow
322:デフォルトの名無しさん
19/12/15 10:09:42 /SOvb5b/.net
黄色だな
323:デフォルトの名無しさん
19/12/15 11:56:51.84 wptEtnNg.net
お題
与えられた自然数の0を全て右端に寄せる
例
2019 -> 2190
102030 -> 123000
123 -> 123
324:デフォルトの名無しさん
19/12/15 12:02:23.68 fpSJINfx.net
>>309
Ruby で、
require 'active_support/time'
def calculate_time_span( now, alarm )
current = Time.now
now_time = Time.parse( now, current ) #=> 2019-12-15 22:00:00 +0900
alarm_time = Time.parse( alarm, current ) #=> 2019-12-15 04:00:00 +0900
diff_time = alarm_time - now_time
# アラームが翌日の場合
diff_time = alarm_time.tomorrow - now_time if diff_time < 0
Time.at( diff_time ).utc.strftime( '%H:%M' )
end
inputs = %w(10:00 16:00 22:00 04:00) # (現在時刻, アラーム時刻)の組
inputs.each_slice( 2 ) do |now, alarm| # 2個ずつ処理する
puts calculate_time_span( now, alarm )
end
325:デフォルトの名無しさん
19/12/15 13:16:18.52 VJoyKt1C.net
>>309 Ruby
def waitTime( n, a )
Time.at( (a - n) % 86400 ).utc
end
326:デフォルトの名無しさん
19/12/15 15:13:57.70 KhVK4v3Y.net
>>309
URLリンク(ideone.com)
C++。あってるかな?
327:デフォルトの名無しさん
19/12/15 15:21:49.83 yZPHpztp.net
>>317 Common Lisp
URLリンク(ideone.com)
328:デフォルトの名無しさん
19/12/15 15:38:04.40 KhVK4v3Y.net
>>317
URLリンク(ideone.com)
C++。できてるかな?
329:デフォルトの名無しさん
19/12/15 16:45:12.24 K3IRPfAN.net
>>315-316
正解
330:デフォルトの名無しさん
19/12/15 20:15:30.36 IFqyyeL5.net
>>317
これもPowerShellで簡単。
function f($n)
{
$m = -join([char[]]"$n" |? {$_ -ne "0"})
($m += "0" * ("$n".length - $m.length))
}
f 2019; f 102030; f 123
331:デフォルトの名無しさん
19/12/15 22:45:37.77 myBFLrpG.net
お題:ハノイの塔の最少手数は一種類しかないのか?
(Part 13, 055)
結果:n枚の円盤すべてを移動させるには最低 2^n -1 回の手数がかかる。
332:デフォルトの名無しさん
19/12/15 22:58:29.31 myBFLrpG.net
4ピンのハノイの塔(河内塔)
n枚の円盤は最初ピン0にある。n枚すべてをピン3に移動させる。
条件:
小円盤の上に大円盤を載せられない。
ピン1とピン2には最大1枚しか置けない。