プログラミングのお題スレ Part16 at TECH
[2ch|▼Menu]
[前50を表示]
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枚しか置けない。

333:デフォルトの名無しさん
19/12/15 23:12:15.95 myBFLrpG.net
・n=2 のとき
12, -, -, -
2, 1, -, -
-, 1, -, 2
-, -, -, 12  (3手)
・n=3 のとき
123, -, -, -
23, 1, -, -
3, 1, 2, -
-, 1, 2, 3
-, 1, -, 23
-, -, -, 123  (5手)
・n=4 のとき
1234, -, -, -
234, 1, -, -
34, 1, 2, -
4, 1, 2, 3
4, 1, -, 23
-, 1, 4, 23
2, 1, 4, 3
12, -, 4, 3
12, 3, 4, -
12, 3, -, 4
12, -, -, 34
2, 1, -, 34
-, 1, -, 234
-, -, -, 1234  (13手)

334:デフォルトの名無しさん
19/12/15 23:25:59.52 myBFLrpG.net
・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
4, 1, 5, 23
24, 1, 5, 3
124, -, 5, 3
124, 3, 5, -
124, 3, -, 5
24, 3, 1, 5
4, 3, 1, 25
4, 3, -, 125
-, 3, 4, 125
3, -, 4, 125
3, 1, 4, 25
23, 1, 4, 5
23, 1, -, 45
3, 1, 2, 45
-, 1, 2, 345
-, 1, -, 2345
-, -, -, 12345  (25手)

335:デフォルトの名無しさん
19/12/16 08:07:19.12 YuYKZXFs.net
お題:
ここに単語を登録したリストがある
リストには以下の種類の言葉が存在する
単語:(例)くさり
単語解説:(例)環状の部品を繋げて線状にしたもの
リストには上記ペアを1単位として、ずらずら並んでいる
(数十個くらい)
リストの中の似たような単語を探し、
以下のサンプルのようにボケ、ツッコミを繰り返すプログラムを作れ
似たような単語が見つからない場合には
最後に「こうじ:お前とはもうやってられませんわ」とprintし、
プログラムを終了せよ
動作サンプル:
こうじ:「くさび」を見ると興奮するよね
てつお:ああ、環状の部品を繋げて線状にしたものね
こうじ:それは「くさり」
てつお:ああ、マルスダレガイ科に属する二枚貝ね
こうじ:それは「あさり」
てつお:ああ、慰安婦の嘘を書いた新聞ね
こうじ:それは「あさひ」
こうじ:お前とはもうやってられませんわ

336:デフォルトの名無しさん
19/12/16 09:38:23.88 UpTR80vx.net
>>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を空けるため、ピン0とピン2に移すことになる。
しかしピン0には3枚しか移動できず、ピン3に n-5枚残ってしまう。
∴ n≧6 では不可能。

337:デフォルトの名無しさん
19/12/16 10:03:17.28 UpTR80vx.net
条件を変えたらどうなるか?
条件(1,1)
 ピン1、ピン2には最大で1枚しか置けない。   >>326
条件(1,2)
 ピン1には最大で1枚、ピン2には最大で2枚しか置けない。
条件(2,2)
 ピン1、ピン2には最大で2枚しか置けない。

338:デフォルトの名無しさん
19/12/16 12:12:45.33 ZZ8St2Js.net
>>331
pin1,pin2に置ける枚数(の合計)に上限があれば
移動可能枚数に上限がつく

339:デフォルトの名無しさん
19/12/16 14:51:32.32 b9yK9thh.net
>>314
common lisp
(format t "~R" 16776960)
sixteen million, seven hundred and seventy-six thousand, nine hundred and sixty

340:デフォルトの名無しさん
19/12/16 15:02:43.75 b9yK9thh.net
>>317
perl5
cat digits
2019
102030
123
cat digits | perl -lane '$zero = 0; while (s/0//) {++$zero}; print $_ . "0" x $zero;'
2190
123000
123

341:デフォルトの名無しさん
19/12/16 17:56:02.69 rcGH9Ke6.net
>>317 Ruby
def f(n)
n.to_s.chars.partition{|x| x !="0"}.join .to_i
end

342:
19/12/16 20:29:58.89 NZyGx79l.net
>>326
これ昔やったことがありますが、すっかり忘れてしまったのは残念ですね…

343:デフォルトの名無しさん
19/12/16 22:11:10.55 Ppfui4Eb.net
>>317 PowerShell
function f($n) {($n -replace "0", "") + ($n -replace "[^0]", "")}

344:デフォルトの名無しさん
19/12/17 01:24:02.19 XiWpNBJ4.net
>>317 Common Lisp
URLリンク(ideone.com)

345:デフォルトの名無しさん
19/12/17 04:04:38.21 XiWpNBJ4.net
>>317 Common Lisp
>>338は間違いでした
修正版: URLリンク(ideone.com)

346:デフォルトの名無しさん
19/12/17 13:17:36.43 EDJKyz+u.net
>>317 julia
function f(n)
  r = ""
  for c = reverse(string(n))
    if c == '0'
  r = r * c
    else
      r = c * r
    end
  end
  parse(Int, r)
end

347:デフォルトの名無しさん
19/12/17 17:33:51.45 /DSBUbt2.net
お題
任意の文字列からaが連続する最も長い長さを出力してください
入力:acgtaattgaaagggtctt
期待値:3

348:デフォルトの名無しさん
19/12/17 18:10:05.60 Etag1t/i.net
>>341 Common Lisp
URLリンク(ideone.com)

349:デフォルトの名無しさん
19/12/17 18:50:00.42 Etag1t/i.net
>>342
うん? またバグってた
>>341 Common Lisp
URLリンク(ideone.com)

350:デフォルトの名無しさん
19/12/17 19:34:15.94 JvBVW/sd.net
>>317 C++
数値のままやってみた
URLリンク(ideone.com)

351:デフォルトの名無しさん
19/12/17 20:02:20.13 bKU/e1zO.net
>>341 Ruby
p 'acgtaattgaaagggtctt'.gsub(/[^a]+/,' ').split.uniq.sort_by{|s| s.size}.last.size

352:デフォルトの名無しさん
19/12/17 21:06:34.08 eGUcswGM.net
お題
1〜1,000 の整数の内、3 か5 の倍数だけを選んで、その合計を求めよ

353:デフォルトの名無しさん
19/12/17 21:42:29.19 p+XnOFki.net
>>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

354:デフォルトの名無しさん
19/12/17 21:42:34.96 Q1C16S4i.net
>>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

355:デフォルトの名無しさん
19/12/17 21:45:36.79 Q1C16S4i.net
>>348
typo
/a+/ => /a*/

356:
19/12/17 21:47:21.34 780pCLgH.net
お題:ファイル名の一部に空白文字が使える OS(出題者想定は Windows7) の元で、正常に argc, argv を切り出せるスタートアップ支援ルーチンを作ってください
"" で囲まれている文字列は、それが一つのファイル名またはディレクトリ名として扱うこととし、"" で囲まれていない空白は引数の区切りとします
int main() {
rearrange(...);
...
と main の頭に置いて、xargc, xargv を代わりに使う、見たいな感じでお願いします
例によって私が痛切に欲しいと思っているものです…

357:デフォルトの名無しさん
19/12/17 23:55:17.00 jG+XSsUd.net
>>341は簡単すぎるので、
任意の文字列から連続してる文字が最も長い文字とその文字数を求めよ
最も長い文字が複数ある場合は全て出力すること
入力:acgtaattgaaagggtctt
期待値: ("a", 3), ("g",3)

358:デフォルトの名無しさん
19/12/18 00:00:22.88 mWocJHci.net
期待値
の意味って学校で習わなかった?

359:デフォルトの名無しさん
19/12/18 00:01:42.93 i+6d3gEf.net
>>350
依頼禁止

360:デフォルトの名無しさん
19/12/18 00:09:07.64 i+6d3gEf.net
>>346 C
int s(int n){ return (1000/n)*(1000/n+1)/2*n; }
int main(){ return s(3)+s(5)-s(15); }

361:デフォルトの名無しさん
19/12/18 00:12:20.91 i+6d3gEf.net
int main(){ return 234168; }
で良い気がしてきた

362:デフォルトの名無しさん
19/12/18 00:13:22.10 LTf


363:Q+mrC.net



364:デフォルトの名無しさん
19/12/18 00:28:03.60 i+6d3gEf.net
どうせコンパイルしたら>>355になる

365:デフォルトの名無しさん
19/12/18 01:55:09 JeMlTDQr.net
>>351 Common Lisp
URLリンク(ideone.com)

366:デフォルトの名無しさん
19/12/18 06:09:15.93 6RKB+CQ3.net
>>351 Ruby
p 'acgtaattgaaagggtctt'.scan(/((.)\2*)/).group_by{|s, _| s.size}.max&.last&.map{|s, c| [c, s.size]}
# => [["a", 3], ["g", 3]]

367:デフォルトの名無しさん
19/12/18 10:45:51.93 AmwvkO78.net
acgtが出てくんだからながさ1億の文字列なんじゃね

368:蟻人間
19/12/18 11:33:42.87 Zo1XP656.net
>>350
__getmainargs

369:デフォルトの名無しさん
19/12/18 12:47:12.26 Xcao9p4E.net
acgtが出てくんだからDNA配列だろな。
 a=adenine, c=cytosine, g=guanine, t=thymine
ながさ30億の塩基対なんぢゃね?(ヒトの場合)

370:デフォルトの名無しさん
19/12/18 13:00:45.28 Xcao9p4E.net
>>331
・n=7 のとき
 条件(1,2) または 条件(2,2) とする。
 1234567, -, -, -
  (>328)
 67, -, -, 12345
 7, 6, -, 12345
 -, 6, 7, 12345
 6, -, 7, 12345
  (>327)
 12346, -, 7, 5
 12346, 5, 7, -
 12346, 5, -, 7
 12346, -, 5, 7
   (>327)
 6, -, 5, 12347
 6, 5, -, 12347
 -, 5, 6, 12347
 5, -, 6, 12347
   (>327)
 12345, -, 6, 7
 12345, -, -, 67
   (>328)
 -, -, -, 1234567
にて可能。

371:デフォルトの名無しさん
19/12/18 13:04:26.11 iEIErwam.net
(1,2)で8
(2,2)だと12
までは出来たぞ

372:デフォルトの名無しさん
19/12/18 13:06:11.00 iEIErwam.net
(1,3)で11
紙と鉛筆で考えただけなんで
もっと出来るかも

373:デフォルトの名無しさん
19/12/18 13:29:12.80 iEIErwam.net
(n,1)=3n+2
(2,2)以上だと
(m, n)=4(n+m-1)
まではいける

374:デフォルトの名無しさん
19/12/18 14:02:18.59 1FTJXM5f.net
>>317
Kotlin
URLリンク(paiza.io)
実は数字かどうかではなく '0' かどうかで見てるだけ。

375:デフォルトの名無しさん
19/12/18 14:58:11.70 Xcao9p4E.net
>>331
・n=8のとき
 条件(1,2) または 条件(2,2) とする。
 12345678, -, -, -    (>328)
 678, -, -, 12345
 78, -, 6, 12345      (>328)
 1234578, -, 6, -
 1234578, -, -, 6     (>328)
 78, -, -, 123456
 8, 7, -, 123456
 -, 7, 8, 123456
 7, -, 8, 123456      (>328)
 123457, -, 8, 6
 123457, 6, 8, -
 123457, 6, -, 8
 123457, -, 6, 8      (>328)
 7, -, 6, 123458
 7, 6, -, 123458
 -, 6, 7, 123458
 6, -, 7, 123458      (>328)
 123456, -, 7, 8
 123456, -, -, 78     (>328)
 6, -, -, 1234578
 -, -, 6, 1234578     (>328)
 12345, -, 6, 78
 12345, -, -, 678     (>328)
 -, -, -, 12345678
にて可能。
・n=9 は 条件(1,2) では無理か・・・・

376:デフォルトの名無しさん
19/12/18 16:04:48.01 iEIErwam.net
(0,0)=1
(n,m)=(n+2)(m+2)-4
ですかね

377:デフォルトの名無しさん
19/12/18 21:05:50.74 WdZQqUwr.net
>>359
Rでrle関数を使って楽々
MaxRepChar <- function(s) {
 if (!nchar(s)) return(invisible())
 r <- rle(unlist(strsplit(s, "")))
 b <- r$lengths == max(r$lengths)
 cat(sprintf('("%s", %d)', r$values[b], r$lengths[b]), sep = ", "); cat("\n")
}
MaxRepChar("acgtaattgaaagggtctt")
MaxRepChar("スレリンク(tech板)")
-- 実行結果 --
("a", 3), ("g", 3)
("t", 2), ("/", 2), ("8", 2), ("2", 2)

378:デフォルトの名無しさん
19/12/18 21:06:21.05 H5ShkPcr.net
f(m, n) : 動かせる最大枚数
m≧n≧1の時
x=f(m-1,n)
A:1,2,3,...,x
B:x+1,...,x+n
C:x+n+1
D:x+n+2
ABCD, -, -, -
CD, -, -, AB
C, D, -, AB
AC, D, -, B
AC, -, -, BD
C, -, - ABD
-, C, -, ABD
A, C, -, BD
A, -, -, BCD
-, -, - ABCD
よって
f(m, n)≧f(m-1,n)+n+2
f(1,0)=2
f(m,n)=f(n,m)
と数学的帰納法により
f(m,n)≧(m+2)(n+2)-4

379:
19/12/18 22:57:24.30 tbeJyQYA.net
>>371
理論はどうでもいいから動く


380:コードを出して欲しいです、このスレ的には



381:デフォルトの名無しさん
19/12/18 23:01:39.59 i+6d3gEf.net
ここまで出来ればあとは簡単
他の人に任せた

382:デフォルトの名無しさん
19/12/19 00:58:04.71 1AoIgbUn.net
>>317 文言 wenyan-lang
URLリンク(wenyan-lang.lingdong.works)
吾有一術。名之曰「零右寄」。欲行是術。必先得一數。曰「数」。乃行是術曰。
吾有三數。曰零。曰零。曰一。名之曰「甲」曰「乙」曰「丙」。
恆為是。若「数」等於零者乃止也。除「数」以十。所餘幾何。昔之「甲」者。今其是矣。
若「甲」等於零者。乘「乙」以十。昔之「乙」者。今其是矣。若非。乘「甲」以「丙」。
加其以「乙」。昔之「乙」者。今其是矣。也。除「数」以十。昔之「数」者。今其是矣。
除其以一。所餘幾何。減「数」以其。昔之「数」者。今其是矣。
乘「丙」以十。昔之「丙」者。今其是矣。云云。乃得「乙」。是謂「零右寄」之術也。
吾有一列。名之曰「丁」。充「丁」以二千零一十九。以一十萬二千零三十。以一百二十三。
凡「丁」中之「戊」。施「零右寄」於「戊」。名之曰「己」吾有三數。曰「戊」。曰「「、」」。曰「己」。書之。云云。
OUTPUT ---------------------
二千零一十九、二千一百九十
一十萬二千零三十、一十二萬三千
一百二十三、一百二十三

なんかGIGAZINEで紹介されていたので

383:デフォルトの名無しさん
19/12/19 03:38:08.86 i+MhtJYW.net
>>363
・n=7 のとき
 条件(1,2) または 条件(2,2)
 {1234}=A と略記する。
 A567, -, -, -   (>327)
 567, -, -, A
 67, 5, -, A
 7, 5, 6, A
 57, -, 6, A    (>327)
 A57, -, 6, -
 A57, -, -, 6   (>327)
 57, -, -, A6
 7, 5, -, A6
 -, 5, 7, A6
 5, -, 7, A6    (>327)
 A5, -, 7, 6
 A5, 6, 7, -
 A5, 6, -, 7
 A5, -, -, 67    (>327)
 5, -, -, A67
 -, -, 5, A67    (>327)
 A, -, 5, 67
 A, -, -, 567    (>327)
 -, -, -, A567
にて可能。

384:デフォルトの名無しさん
19/12/19 03:43:24.67 i+MhtJYW.net
>>368
・n=8のとき
 条件(1,2) または 条件(2,2)
 {12345} = A と略記する。
 A678, -, -, -       (>328)
 678, -, -, A
 78, 6, -, A
 8, 6, 7, A
 68, -, 7, A       (>328)
 A68, -, 7, -
 A68, -, -, 7       (>328)
 68, -, -, A7
 8, 6, -, A7
 -, 6, 8, A7
 6, -, 8, A7       (>328)
 A6, -, 8, 7
 A6, 7, 8, -
 A6, 7, -, 8
 A6, -, -, 78       (>328)
 6, -, -, A78
 -, -, 6, A78     (>328)
 A, -, 6, 78
 A, -, -, 678       (>328)
 -, -, -, A678
にて可能。

385:デフォルトの名無しさん
19/12/19 04:34:36.23 i+MhtJYW.net
・n=12 のとき
 条件(2,2)
{12345678} = A, {9,10} = B, 11=C, 12=D と略記する。
 ABCD, -, -, -   (>376)
 BCD, -, -, A
 CD, -, B, A
 D, C, B, A
 BD, C, -, A    (>376)
 ABD, C, -, -
 ABD, -, -, C   (>376)
 BD, -, -, AC
 D, -, B, AC
 -, D, B, AC
 B, D, -, AC    (>376)
 AB, D, -, C
 AB, D, C, -
 AB, -, C, D
 AB, -, -, CD   (>376)
 B, -, -, ACD
 O, 9, -, ACD   (>376)
 AO, 9, -, CD
 AO, -, -, 9CD   (>376)
 O, -, -, A9CD
 -, O, -, A9CD   (>376)
 A, O, -, 9CD
 A, O, 9, CD
 A, -, 9, OCD
 A, -,-, BCD    (>376)
 -, -, -, ABCD
にて可能。

386:デフォルトの名無しさん
19/12/19 07:01:53.01 NLbJ7Izu.net
>>317 J
f =: 3 : 0
a =. ": y
b =. a -. '0'
". b , a -. b
)

387:346
19/12/19 11:40:09.74 dMnFAlGo.net
>>346
Ruby で、234,168
# 蓄積変数の初期値は、0
puts ( 1..1_000 ).inject( 0 ) { |sum, num|
num % 3 == 0 || num % 5 == 0 ? sum + num : sum
}

388:デフォルトの名無しさん
19/12/19 13:03:26.44 LRZ6v8WB.net
>>375-377
>>371で理論は出来たんだから
次は
プログラムにするか
等号の証明をするか
最短手順を調べるか
本数を増やすか
ではないでしょうか?
私は>>371で満足
出題者ありがとう

389:デフォルトの名無しさん
19/12/19 14:49:39.96 i+MhtJYW.net
>>380
う〜む、等号の証明でござる。

390:デフォルトの名無しさん
19/12/19 16:03:07.29 POC72xQm.net
どれが?

391:デフォルトの名無しさん
19/12/19 16:34:48.53 dMnFAlGo.net
お題
MY FAVORITE SONGS を、Snake, Camel, Pascal にして!
my_favorite_songs, myFavoriteSongs, MyFavoriteSongs

392:デフォルトの名無しさん
19/12/19 17:08:15.12 0uPukb6z.net
>>346
Kotlin script
ただ馬鹿正直に抜き出して足すだけ。
println((1..1000).filter { it % 3 == 0 || it % 5 == 0 }.sum())

393:デフォルトの名無しさん
19/12/19 17:42:54.73 0uPukb6z.net
>>383
Kotlin
URLリンク(paiza.io)

394:デフォルトの名無しさん
19/12/19 19:39:18.71 xlnTqgd4.net
>>383 Ruby
str = 'MY FAVORITE SONGS'
puts str.tr('A-Z ', 'a-z_') # => my_favorite_songs
puts str.gsub(/ (\w)/){$1.downcase}.swapcase # => myFavoriteSongs
puts str.split.map(&:capitalize).join # => MyFavoriteSongs

395:デフォルトの名無しさん
19/12/19 20:42:11.68 M6N2QgoX.net
>>351 >>362 Common Lisp
URLリンク(ideone.com)
30億バイトでの実行結果:
% uname -p
Intel(R) Core(TM) i7-4765T CPU @ 2.00GHz
% /usr/bin/time -p sbcl --script odai-pt16-351-362-lisp-3-hash-table.lisp </tmp/random-acgt-3-billion.txt
((#\T . 17))
real 178.75
user 177.55
sys 1.17
%
*standard-input* ではなく (open "/dev/stdin" ...) を使っているのは *standard-input* が遅いから
ざっと六倍もの時間がかかった


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1207日前に更新/270 KB
担当:undef