[過去ログ] プログラミングのお題スレ Part16 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
253: 2019/12/11(水)21:11 ID:7CYZ1E2N(3/3) AAS
素数判定する必要は無いよ
254
(5): ◆QZaw55cn4c 2019/12/11(水)22:08 ID:6E3wj7zP(2/2) AAS
>>252
>long long int のC言語でも100億ぐらいを上限でサポートしてる

極めて不正確ですよ
C99 後は uint64_t の最大値は 1844'6744'0737'0955'1615=約 1844 京ですね
それに実際に割ってみる方法以外には素数判定があるとでも?そんなものは存在しませんね
255: 2019/12/11(水)22:15 ID:10jfhd7e(6/7) AAS
何年も前に素数の数を数え時は
シングルスレッドのコードで
5000億までで1時間弱

だから>>251もそのくらいで求まるはず
256
(1): 2019/12/11(水)22:46 ID:10jfhd7e(7/7) AAS
>>254
詳しそうなので>>251をよろしく!
257
(1): 2019/12/11(水)23:52 ID:VagVWTF0(1) AAS
知り合いから、「子供の宿題なんだけど解けない」と言われた。

「正方形13枚と正三角形を何枚か組み合わせて、凸多面体を作るとき、その頂点数は A 個または B 個である。ただし一つの頂点には同じ枚数の面が集まっているものとし、A < B とする。」

途中経過を適宜表記しつつ解くプログラムを!
258: 2019/12/12(木)00:28 ID:UvCIGzud(1/13) AAS
A=19
B=38
259: 2019/12/12(木)00:32 ID:UvCIGzud(2/13) AAS
>>247
3乗して64bitに収まる範囲全て調べたけど
7個から減らなかった
260: 2019/12/12(木)00:35 ID:UvCIGzud(3/13) AAS
7個になるまで9秒
3乗して64bitに収まる範囲検索2031秒
261: 2019/12/12(木)00:42 ID:UvCIGzud(4/13) AAS
>>257
プログラミングの宿題じゃないはずなので
解き方は他の板で聞いて
262: 2019/12/12(木)00:44 ID:UvCIGzud(5/13) AAS
k=30, 33, 42, 52, 74, 75, 84
の時がわからん
263
(4): 2019/12/12(木)06:06 ID:wmbGd8tm(1/3) AAS
>>254
f(x) = 1 if x is prime
f(x) = 0 otherwise
なる f: R -> R が存在しないってなんで言い切れんの?
頭悪すぎ
264: 2019/12/12(木)07:32 ID:UvCIGzud(6/13) AAS
>>254>>263も頭悪すぎだ
265
(2): 2019/12/12(木)07:40 ID:UvCIGzud(7/13) AAS
>>252
素数判定は不要

>>254
uint64_tの上限じゃなくて素数判定可能な範囲
また、実際に割ってみる以外の方法も色々と存在する

>>263
fは存在する
あなたが書いた通りの定義そのままをfとすれば良い
fの存在と素数判定の方法が存在するかどうかは無関係
266
(1): 2019/12/12(木)07:48 ID:wmbGd8tm(2/3) AAS
>>265
お前も馬鹿だな
簡単な関数で f が定義できるならそれはそのまま簡単な計算で素数判定ができることに他ならない
こちらはそんな方法が存在するといっているわけではなく、無配慮にそんなものは存在しないと一刀両断する数学的リテラシーの無さを指摘しているだけなんだが
267: 2019/12/12(木)08:00 ID:UvCIGzud(8/13) AAS
>>263
「簡単な関数でfが定義できる」
非常に重要な言葉を後付けだし
これが最初からあったとしても、
単に簡単に素数判定可能可能を言い換えただけの
何の意味もないレス

リテラシーの無さの指摘の方法が頭が悪い
268: 2019/12/12(木)08:08 ID:UvCIGzud(9/13) AAS
現代の技術で言えば

特殊な形であれば高速に判定する方法はある
特殊な形でなければ高速に判定する方法は見つかっていない
実際に割ってみる以外の判別方法は存在する
269: 2019/12/12(木)08:25 ID:UvCIGzud(10/13) AAS
なんでNやZじゃなくてRにしたのか気になる
270: 2019/12/12(木)12:56 ID:wmbGd8tm(3/3) AAS
文脈無視して揚げ足取ってて草
こいつ関数は全射しか存在しないとでも思ってんのか
271: 2019/12/12(木)14:55 ID:2PtCb74v(1) AAS
単純な疑問だよ
なんかこだわりとか深い意味とかあるのかと

「実数が素である」とか書かれると、
素数じゃない別の意味を指してると思うわけで

揚げ足取られたと思ったってことは
ミスったと思ったんだよね?
272: 2019/12/12(木)15:35 ID:zRSUYply(1) AAS
いつもの連投アスペ君じゃん
相手すんなよ
273: 2019/12/12(木)17:58 ID:2C/x7O5N(1) AAS
論破されて捨て台詞
の典型でした
274: 2019/12/12(木)18:19 ID:RcQND7/k(1) AAS
5chリテラシーが低いやつもだいぶ減ってはきてるが
このスレはちょいちょい出てくるよなぁ
275: 2019/12/12(木)18:27 ID:cffvEFbc(1/3) AAS
>>263を書いておいて良くいうよ
276: [age] 2019/12/12(木)18:39 ID:JPTMcftT(1) AAS
論破を禁止します
277: 2019/12/12(木)19:05 ID:f2lx0DlC(1) AAS
まーたロンパンジーが湧いてんのかよ
278: 2019/12/12(木)19:12 ID:cffvEFbc(2/3) AAS
リテラシー君
よほど悔しかったのかな?
279
(1): ◆QZaw55cn4c 2019/12/12(木)19:15 ID:bwSkQtN1(1/2) AAS
>>256
単に上限値を増やしただけのお題なんて糞だと思います
280: ◆QZaw55cn4c 2019/12/12(木)19:17 ID:bwSkQtN1(2/2) AAS
>>265
>また、実際に割ってみる以外の方法も色々と存在する
私の初等的な教科書にはウィルソンの定理の証明が載っていました、>>254 はちょっと勇み足でしたね

>>266
>無配慮にそんなものは存在しないと一刀両断する数学的リテラシーの無さ
まあ、認めましょう
281: 2019/12/12(木)19:18 ID:cffvEFbc(3/3) AAS
>>279
そう思うってことは上限値以外の差がわからんて事だね
決定的な違いがある
282
(1): 2019/12/12(木)20:55 ID:uIjgN9ep(1) AAS
お題:

(A) 階乗の下z桁がすべて0となるような最小の自然数を、z = 1, 12, 123, 1234, 12345,
123456, 1234567, 12345678, 123456789の各場合について求めよ。存在しないときは
そう表示せよ。

(B) (A)の「下z桁がすべて0となる」という条件を「0である桁がz個となる」に置き換えて解け。

(A)はちょっと考えれば簡単に解ける。(B)はどうか知らない。多桁整数計算ができるJuliaでは
z = 12345までは力任せでも求められたが。
283
(1): 2019/12/12(木)21:21 ID:qa03h3dy(1) AAS
5で割っていく感じだから
整数無視して無限に割ると
おおまかに4で割った感じの数0が並ぶ
126! は4で割って31ぐらい
284: 2019/12/12(木)22:14 ID:WrPVO4K2(1) AAS
連投論破野郎が論破されてて草
285
(1): 2019/12/12(木)23:15 ID:UvCIGzud(11/13) AAS
(A)だけ C++
外部リンク:ideone.com
286: 2019/12/12(木)23:18 ID:UvCIGzud(12/13) AAS
(B)は実際に下限から順番に計算していかないとダメじゃないか?
287
(3): 2019/12/12(木)23:52 ID:UvCIGzud(13/13) AAS
n ! のゼロの個数は大雑把にはこのくらい
log_10(n !) / 10 + n * 9 / 40

逆算すれば大体の値はわかる
でも最小値だから正確に求めるのには使えない
288
(1): 2019/12/13(金)18:36 ID:0Lb/VhZx(1) AAS
[お題]
今月(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
289
(1): 2019/12/13(金)20:06 ID:KAf60mjk(1) AAS
300億にしても年の曜日は14パターンしか無いのであっという間に解ける気が…
曜日は400年周期だから400年分求めればあとは割り算するだけかな?
290: 2019/12/13(金)20:15 ID:QuzLYYNu(1/10) AAS
C++
外部リンク:ideone.com
291: 2019/12/13(金)20:16 ID:QuzLYYNu(2/10) AAS
>>289
今日やらないとダメだよ
292: 2019/12/13(金)20:32 ID:7JZ8Vcg3(1/2) AAS
>>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年周期になることが分かる。
省10
293
(1): 2019/12/13(金)20:57 ID:7JZ8Vcg3(2/2) AAS
>>285
正解。例によってRで簡潔に書いた解答例: 外部リンク:ideone.com

>>287
やっぱり無理か。ちなみに、Juliaでz = 12345まで力任せで求めるプログラム
外部リンク:ideone.com

--- 実行結果 ---
階乗の0である桁が1個になる最小値は5です。
階乗の0である桁が12個になる最小値は37です。
階乗の0である桁が123個になる最小値は299です。
階乗の0である桁が1234個になる最小値は2414です。
省1
294: 2019/12/13(金)21:27 ID:QuzLYYNu(3/10) AAS
>>293

>>287の式に20177を入れると12349.7
かなりいい線行ってる
295
(1): 2019/12/13(金)22:22 ID:QuzLYYNu(4/10) AAS
123456個は存在しない
296
(1): 2019/12/13(金)23:21 ID:QuzLYYNu(5/10) AAS
123457桁になる 30484!
から
下位に0が123457個続く 493840!
までの間に存在しない事を示せば
存在しない証明になりますが
もっと範囲を絞った証明は出来ないですかねえ

確率的には>>287の付近だけ調べれば良いんですが...
297: 2019/12/13(金)23:47 ID:r78PztnN(1) AAS
全部調べる感じでぶん回してるけど1234567までが長いお(´・ω・`) (123456は>>295の言う通り出なかった)
1時間ぶん回して900000!まで行ったが…
298: 2019/12/13(金)23:49 ID:r2S5lo/C(1/2) AAS
数学でワープできる分手計算のほうが早い
299: 2019/12/13(金)23:49 ID:QuzLYYNu(6/10) AAS
kwsk
300: 2019/12/13(金)23:50 ID:r2S5lo/C(2/2) AAS
>283
301: 2019/12/13(金)23:52 ID:QuzLYYNu(7/10) AAS
(A)は解決済み
(B)の話
302: 2019/12/13(金)23:53 ID:QuzLYYNu(8/10) AAS
数学で絞れるのは>>296くらいかと
303: 2019/12/13(金)23:56 ID:QuzLYYNu(9/10) AAS
下限の n! を計算するのは速い
そこから順番に1個ずつnを増やしていって
0を数えていかないとならない

見つからなければ上限までずっと
304
(1): 2019/12/13(金)23:59 ID:QuzLYYNu(10/10) AAS
ちなみに私、東大の数学科卒なんで
305
(1): 2019/12/14(土)00:07 ID:ruM/1CH5(1/3) AAS
ワープ
(* 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
省2
306: 2019/12/14(土)00:14 ID:03SKvnKb(1/2) AAS
>>305
だからそれは>>282の(A)の話じゃろ…
307: 2019/12/14(土)00:15 ID:ruM/1CH5(2/3) AAS
Bの話か
308: 2019/12/14(土)02:58 ID:03SKvnKb(2/2) AAS
階乗の0である桁が1234567個になる最小値は1542987です。
お、出た…4時間か
309
(5): 2019/12/14(土)03:55 ID:DhSlagHw(1) AAS
お題: 目覚まし時計の現在時刻とアラーム時刻が入力されるので、待機時間を出力しなさい

例:
現在時刻 = 10:00
アラーム時刻 = 16:00
待機時間 = 06:00

現在時刻 = 22:00
アラーム時刻 = 04:00
待機時間 = 06:00
310: 2019/12/14(土)09:12 ID:ruM/1CH5(3/3) AAS
>>309
これだな
外部リンク:paiza.io

~/bin/sleep.pl 10:00
2909 00:48:29

のように使ってる
311: 2019/12/14(土)09:59 ID:Lp9CT80F(1) AAS
>>304
進振り何点だった? 連投アスペ君
312
(1): 2019/12/14(土)22:12 ID:8CJijD11(1) AAS
>>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"
  ""
省14
313: 2019/12/15(日)00:16 ID:K3IRPfAN(1/3) AAS
>>312
キャスト出来るんだな
楽そう
314
(2): 2019/12/15(日)06:09 ID:K3IRPfAN(2/3) AAS
お題: あなたは研究所で助手をしています
ある日、博士からこんな手紙が届きました

 助手よ。この数値の名前を教えて欲しい
 16776960

あなたは博士に返事を書こうと思います
その返事の内容をお答えください
315
(1): 2019/12/15(日)07:44 ID:VJoyKt1C(1/2) AAS
>>314 直感
Yellow
316
(1): 2019/12/15(日)10:09 ID:/SOvb5b/(1) AAS
黄色だな
317
(13): 2019/12/15(日)11:56 ID:wptEtnNg(1) AAS
お題
与えられた自然数の0を全て右端に寄せる

2019 -> 2190
102030 -> 123000
123 -> 123
318: 2019/12/15(日)12:02 ID:fpSJINfx(1) AAS
>>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
省6
319: 2019/12/15(日)13:16 ID:VJoyKt1C(2/2) AAS
>>309 Ruby
def waitTime( n, a )
Time.at( (a - n) % 86400 ).utc
end
320: 2019/12/15(日)15:13 ID:KhVK4v3Y(1/2) AAS
>>309
外部リンク:ideone.com
C++。あってるかな?
321: 2019/12/15(日)15:21 ID:yZPHpztp(1) AAS
>>317 Common Lisp
外部リンク:ideone.com
322: 2019/12/15(日)15:38 ID:KhVK4v3Y(2/2) AAS
>>317
外部リンク:ideone.com
C++。できてるかな?
323: 2019/12/15(日)16:45 ID:K3IRPfAN(3/3) AAS
>>315-316
正解
324: 2019/12/15(日)20:15 ID:IFqyyeL5(1) AAS
>>317
これもPowerShellで簡単。

function f($n)
{
  $m = -join([char[]]"$n" |? {$_ -ne "0"})
  ($m += "0" * ("$n".length - $m.length))
}

f 2019; f 102030; f 123
325: 2019/12/15(日)22:45 ID:myBFLrpG(1/4) AAS
お題:ハノイの塔の最少手数は一種類しかないのか?
  (Part 13, 055)

結果:n枚の円盤すべてを移動させるには最低 2^n −1 回の手数がかかる。
326
(3): 2019/12/15(日)22:58 ID:myBFLrpG(2/4) AAS
4ピンのハノイの塔(河内塔)
n枚の円盤は最初ピン0にある。n枚すべてをピン3に移動させる。

条件:
 小円盤の上に大円盤を載せられない。
 ピン1とピン2には最大1枚しか置けない。
327
(2): 2019/12/15(日)23:12 ID:myBFLrpG(3/4) AAS
・n=2 のとき
12, -, -, -
2, 1, -, -
-, 1, -, 2
-, -, -, 12  (3手)

・n=3 のとき
123, -, -, -
23, 1, -, -
3, 1, 2, -
-, 1, 2, 3
省17
328
(3): 2019/12/15(日)23:25 ID:myBFLrpG(4/4) AAS
・n=5 のとき
12345, -, -, -
2345, 1, -, -
345, 1, 2, -
45, 1, 2, 3
45, 1, -, 23
45, -, -, 123
5, 4, -, 123
-, 4, 5, 123
4, -, 5, 123
省17
329: 2019/12/16(月)08:07 ID:YuYKZXFs(1) AAS
お題:

ここに単語を登録したリストがある
リストには以下の種類の言葉が存在する

単語:(例)くさり
単語解説:(例)環状の部品を繋げて線状にしたもの

リストには上記ペアを1単位として、ずらずら並んでいる
(数十個くらい)

リストの中の似たような単語を探し、
以下のサンプルのようにボケ、ツッコミを繰り返すプログラムを作れ
似たような単語が見つからない場合には
省11
330: 2019/12/16(月)09:38 ID:UpTR80vx(1/2) AAS
>>326
・n≧6のとき
ピン1とピン2には各1個しか置けないから 1〜(n-1) を置くことはできない。
∴ n を ピン0 から ピン3 に直送することはできない。
∴ ピン0 → ピン1 → ピン3 と送ろう。
まず 12345 をピン2、ピン3に退避する。(n=6の場合)
 123456, -, -, -
 6, -, m, 12345-m  (1≦m≦5)
 6, -, -, 12345    は m=1 と見なす。
 -, 6, m, 12345-m
省3
331
(3): 2019/12/16(月)10:03 ID:UpTR80vx(2/2) AAS
条件を変えたらどうなるか?

条件(1,1)
 ピン1、ピン2には最大で1枚しか置けない。   >>326

条件(1,2)
 ピン1には最大で1枚、ピン2には最大で2枚しか置けない。

条件(2,2)
 ピン1、ピン2には最大で2枚しか置けない。
332: 2019/12/16(月)12:12 ID:ZZ8St2Js(1) AAS
>>331
pin1,pin2に置ける枚数(の合計)に上限があれば
移動可能枚数に上限がつく
333: 2019/12/16(月)14:51 ID:b9yK9thh(1/2) AAS
>>314
common lisp
(format t "~R" 16776960)
sixteen million, seven hundred and seventy-six thousand, nine hundred and sixty
334: 2019/12/16(月)15:02 ID:b9yK9thh(2/2) AAS
>>317
perl5

cat digits
2019
102030
123

cat digits | perl -lane '$zero = 0; while (s/0//) {++$zero}; print $_ . "0" x $zero;'
2190
123000
123
335: 2019/12/16(月)17:56 ID:rcGH9Ke6(1) AAS
>>317 Ruby

def f(n)
n.to_s.chars.partition{|x| x !="0"}.join .to_i
end
336: ◆QZaw55cn4c 2019/12/16(月)20:29 ID:NZyGx79l(1) AAS
>>326
これ昔やったことがありますが、すっかり忘れてしまったのは残念ですね…
337: 2019/12/16(月)22:11 ID:Ppfui4Eb(1) AAS
>>317 PowerShell
function f($n) {($n -replace "0", "") + ($n -replace "[^0]", "")}
338
(1): 2019/12/17(火)01:24 ID:XiWpNBJ4(1/2) AAS
>>317 Common Lisp
外部リンク:ideone.com
339: 2019/12/17(火)04:04 ID:XiWpNBJ4(2/2) AAS
>>317 Common Lisp
>>338は間違いでした
修正版: 外部リンク:ideone.com
340: 2019/12/17(火)13:17 ID:EDJKyz+u(1) AAS
AA省
341
(5): [age] 2019/12/17(火)17:33 ID:/DSBUbt2(1) AAS
お題
任意の文字列からaが連続する最も長い長さを出力してください

入力:acgtaattgaaagggtctt
期待値:3
342
(1): 2019/12/17(火)18:10 ID:Etag1t/i(1/2) AAS
>>341 Common Lisp
外部リンク:ideone.com
343: 2019/12/17(火)18:50 ID:Etag1t/i(2/2) AAS
>>342
うん? またバグってた

>>341 Common Lisp
外部リンク:ideone.com
344: 2019/12/17(火)19:34 ID:JvBVW/sd(1) AAS
>>317 C++
数値のままやってみた

外部リンク:ideone.com
345: 2019/12/17(火)20:02 ID:bKU/e1zO(1) AAS
>>341 Ruby
p 'acgtaattgaaagggtctt'.gsub(/[^a]+/,' ').split.uniq.sort_by{|s| s.size}.last.size
346
(10): 2019/12/17(火)21:06 ID:eGUcswGM(1) AAS
お題

1〜1,000 の整数の内、3 か5 の倍数だけを選んで、その合計を求めよ
347: 2019/12/17(火)21:42 ID:p+XnOFki(1) AAS
>>346
Rで2通りの求め方

d <- c(3, 5, -3 * 5)
q <- 1000 %/% d
cat(sum(d * q * (q + 1) / 2), "\n")
cat(sum(which(1:1000 %% 3 == 0 | 1:1000 %% 5 == 0)), "\n")

--- 実行結果 ---
234168
234168
348
(1): 2019/12/17(火)21:42 ID:Q1C16S4i(1/2) AAS
>>341 Ruby

p 'acgtaattgaaagggtctt'.scan(/a+/).max.size # => 3

>>346 Ruby

p 0.step(1000,3).sum + 0.step(1000, 5).sum - 0.step(1000, 15).sum # => 234168
349: 2019/12/17(火)21:45 ID:Q1C16S4i(2/2) AAS
>>348
typo
/a+/ => /a*/
350
(2): ◆QZaw55cn4c 2019/12/17(火)21:47 ID:780pCLgH(1) AAS
お題:ファイル名の一部に空白文字が使える OS(出題者想定は Windows7) の元で、正常に argc, argv を切り出せるスタートアップ支援ルーチンを作ってください
"" で囲まれている文字列は、それが一つのファイル名またはディレクトリ名として扱うこととし、"" で囲まれていない空白は引数の区切りとします
int main() {
rearrange(...);
...
と main の頭に置いて、xargc, xargv を代わりに使う、見たいな感じでお願いします

例によって私が痛切に欲しいと思っているものです…
351
(3): 2019/12/17(火)23:55 ID:jG+XSsUd(1) AAS
>>341は簡単すぎるので、
任意の文字列から連続してる文字が最も長い文字とその文字数を求めよ
最も長い文字が複数ある場合は全て出力すること
入力:acgtaattgaaagggtctt
期待値: ("a", 3), ("g",3)
352: 2019/12/18(水)00:00 ID:mWocJHci(1) AAS
期待値
の意味って学校で習わなかった?
1-
あと 650 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.031s