- 1 名前:デフォルトの名無しさん mailto:sage [2019/11/17(日) 09:00:22.10 ID:xqEdXdr6.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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part15 mevius.5ch.net/test/read.cgi/tech/1564310397/
- 321 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 07:44:00 ID:VJoyKt1C.net]
- >>314 直感
Yellow
- 322 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 10:09:42 ID:/SOvb5b/.net]
- 黄色だな
- 323 名前:デフォルトの名無しさん [2019/12/15(日) 11:56:51.84 ID:wptEtnNg.net]
- お題
与えられた自然数の0を全て右端に寄せる 例 2019 -> 2190 102030 -> 123000 123 -> 123
- 324 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 12:02:23.68 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 13:16:18.52 ID:VJoyKt1C.net]
- >>309 Ruby
def waitTime( n, a ) Time.at( (a - n) % 86400 ).utc end
- 326 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 15:13:57.70 ID:KhVK4v3Y.net]
- >>309
https://ideone.com/cAF5X7 C++。あってるかな?
- 327 名前:デフォルトの名無しさん [2019/12/15(日) 15:21:49.83 ID:yZPHpztp.net]
- >>317 Common Lisp
https://ideone.com/FjISQ9
- 328 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 15:38:04.40 ID:KhVK4v3Y.net]
- >>317
https://ideone.com/rUuquJ C++。できてるかな?
- 329 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 16:45:12.24 ID:K3IRPfAN.net]
- >>315-316
正解
- 330 名前:デフォルトの名無しさん [2019/12/15(日) 20:15:30.36 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 22:45:37.77 ID:myBFLrpG.net]
- お題:ハノイの塔の最少手数は一種類しかないのか?
(Part 13, 055) 結果:n枚の円盤すべてを移動させるには最低 2^n −1 回の手数がかかる。
- 332 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 22:58:29.31 ID:myBFLrpG.net]
- 4ピンのハノイの塔(河内塔)
n枚の円盤は最初ピン0にある。n枚すべてをピン3に移動させる。 条件: 小円盤の上に大円盤を載せられない。 ピン1とピン2には最大1枚しか置けない。
- 333 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 23:12:15.95 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/15(日) 23:25:59.52 ID: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 名前:デフォルトの名無しさん [2019/12/16(月) 08:07:19.12 ID:YuYKZXFs.net]
- お題:
ここに単語を登録したリストがある リストには以下の種類の言葉が存在する 単語:(例)くさり 単語解説:(例)環状の部品を繋げて線状にしたもの リストには上記ペアを1単位として、ずらずら並んでいる (数十個くらい) リストの中の似たような単語を探し、 以下のサンプルのようにボケ、ツッコミを繰り返すプログラムを作れ 似たような単語が見つからない場合には 最後に「こうじ:お前とはもうやってられませんわ」とprintし、 プログラムを終了せよ 動作サンプル: こうじ:「くさび」を見ると興奮するよね てつお:ああ、環状の部品を繋げて線状にしたものね こうじ:それは「くさり」 てつお:ああ、マルスダレガイ科に属する二枚貝ね こうじ:それは「あさり」 てつお:ああ、慰安婦の嘘を書いた新聞ね こうじ:それは「あさひ」 こうじ:お前とはもうやってられませんわ
- 336 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 09:38:23.88 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 10:03:17.28 ID:UpTR80vx.net]
- 条件を変えたらどうなるか?
条件(1,1) ピン1、ピン2には最大で1枚しか置けない。 >>326 条件(1,2) ピン1には最大で1枚、ピン2には最大で2枚しか置けない。 条件(2,2) ピン1、ピン2には最大で2枚しか置けない。
- 338 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 12:12:45.33 ID:ZZ8St2Js.net]
- >>331
pin1,pin2に置ける枚数(の合計)に上限があれば 移動可能枚数に上限がつく
- 339 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 14:51:32.32 ID:b9yK9thh.net]
- >>314
common lisp (format t "~R" 16776960) sixteen million, seven hundred and seventy-six thousand, nine hundred and sixty
- 340 名前:デフォルトの名無しさん mailto:sage [2019/12/16(月) 15:02:43.75 ID: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 名前:デフォルトの名無しさん [2019/12/16(月) 17:56:02.69 ID:rcGH9Ke6.net]
- >>317 Ruby
def f(n) n.to_s.chars.partition{|x| x !="0"}.join .to_i end
- 342 名前: mailto:sage [2019/12/16(月) 20:29:58.89 ID:NZyGx79l.net]
- >>326
これ昔やったことがありますが、すっかり忘れてしまったのは残念ですね…
- 343 名前:デフォルトの名無しさん [2019/12/16(月) 22:11:10.55 ID:Ppfui4Eb.net]
- >>317 PowerShell
function f($n) {($n -replace "0", "") + ($n -replace "[^0]", "")}
- 344 名前:デフォルトの名無しさん [2019/12/17(火) 01:24:02.19 ID:XiWpNBJ4.net]
- >>317 Common Lisp
https://ideone.com/2BlyuC
- 345 名前:デフォルトの名無しさん [2019/12/17(火) 04:04:38.21 ID:XiWpNBJ4.net]
- >>317 Common Lisp
>>338は間違いでした 修正版: https://ideone.com/YaImKC
- 346 名前:デフォルトの名無しさん [2019/12/17(火) 13:17:36.43 ID: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 名前:デフォルトの名無しさん mailto:age [2019/12/17(火) 17:33:51.45 ID:/DSBUbt2.net]
- お題
任意の文字列からaが連続する最も長い長さを出力してください 入力:acgtaattgaaagggtctt 期待値:3
- 348 名前:デフォルトの名無しさん [2019/12/17(火) 18:10:05.60 ID:Etag1t/i.net]
- >>341 Common Lisp
https://ideone.com/mkHEii
- 349 名前:デフォルトの名無しさん [2019/12/17(火) 18:50:00.42 ID:Etag1t/i.net]
- >>342
うん? またバグってた >>341 Common Lisp https://ideone.com/JLYXZw
- 350 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 19:34:15.94 ID:JvBVW/sd.net]
- >>317 C++
数値のままやってみた https://ideone.com/iUEQFI
- 351 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 20:02:20.13 ID:bKU/e1zO.net]
- >>341 Ruby
p 'acgtaattgaaagggtctt'.gsub(/[^a]+/,' ').split.uniq.sort_by{|s| s.size}.last.size
- 352 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:06:34.08 ID:eGUcswGM.net]
- お題
1〜1,000 の整数の内、3 か5 の倍数だけを選んで、その合計を求めよ
- 353 名前:デフォルトの名無しさん [2019/12/17(火) 21:42:29.19 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:42:34.96 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 21:45:36.79 ID:Q1C16S4i.net]
- >>348
typo /a+/ => /a*/
- 356 名前: mailto:sage [2019/12/17(火) 21:47:21.34 ID:780pCLgH.net]
- お題:ファイル名の一部に空白文字が使える OS(出題者想定は Windows7) の元で、正常に argc, argv を切り出せるスタートアップ支援ルーチンを作ってください
"" で囲まれている文字列は、それが一つのファイル名またはディレクトリ名として扱うこととし、"" で囲まれていない空白は引数の区切りとします int main() { rearrange(...); ... と main の頭に置いて、xargc, xargv を代わりに使う、見たいな感じでお願いします 例によって私が痛切に欲しいと思っているものです…
- 357 名前:デフォルトの名無しさん mailto:sage [2019/12/17(火) 23:55:17.00 ID:jG+XSsUd.net]
- >>341は簡単すぎるので、
任意の文字列から連続してる文字が最も長い文字とその文字数を求めよ 最も長い文字が複数ある場合は全て出力すること 入力:acgtaattgaaagggtctt 期待値: ("a", 3), ("g",3)
- 358 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 00:00:22.88 ID:mWocJHci.net]
- 期待値
の意味って学校で習わなかった?
- 359 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 00:01:42.93 ID:i+6d3gEf.net]
- >>350
依頼禁止
- 360 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 00:09:07.64 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 00:12:20.91 ID:i+6d3gEf.net]
- int main(){ return 234168; }
で良い気がしてきた
- 362 名前:デフォルトの名無しさん [2019/12/18(水) 00:13:22.10 ID:LTf
]
- [ここ壊れてます]
- 363 名前:Q+mrC.net mailto: 戦が始まります []
- [ここ壊れてます]
- 364 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 00:28:03.60 ID:i+6d3gEf.net]
- どうせコンパイルしたら>>355になる
- 365 名前:デフォルトの名無しさん [2019/12/18(水) 01:55:09 ID:JeMlTDQr.net]
- >>351 Common Lisp
https://ideone.com/Ox6TCK
- 366 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 06:09:15.93 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 10:45:51.93 ID:AmwvkO78.net]
- acgtが出てくんだからながさ1億の文字列なんじゃね
- 368 名前:蟻人間 mailto:sage [2019/12/18(水) 11:33:42.87 ID:Zo1XP656.net]
- >>350
__getmainargs
- 369 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 12:47:12.26 ID:Xcao9p4E.net]
- acgtが出てくんだからDNA配列だろな。
a=adenine, c=cytosine, g=guanine, t=thymine ながさ30億の塩基対なんぢゃね?(ヒトの場合)
- 370 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:00:45.28 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:04:26.11 ID:iEIErwam.net]
- (1,2)で8
(2,2)だと12 までは出来たぞ
- 372 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:06:11.00 ID:iEIErwam.net]
- (1,3)で11
紙と鉛筆で考えただけなんで もっと出来るかも
- 373 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 13:29:12.80 ID:iEIErwam.net]
- (n,1)=3n+2
(2,2)以上だと (m, n)=4(n+m-1) まではいける
- 374 名前:デフォルトの名無しさん [2019/12/18(水) 14:02:18.59 ID:1FTJXM5f.net]
- >>317
Kotlin https://paiza.io/projects/-YDoyhCoGEt6IlVbBdxNyA 実は数字かどうかではなく '0' かどうかで見てるだけ。
- 375 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 14:58:11.70 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 16:04:48.01 ID:iEIErwam.net]
- (0,0)=1
(n,m)=(n+2)(m+2)-4 ですかね
- 377 名前:デフォルトの名無しさん [2019/12/18(水) 21:05:50.74 ID: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("mevius.5ch.net/test/read.cgi/tech/1573948822/") -- 実行結果 -- ("a", 3), ("g", 3) ("t", 2), ("/", 2), ("8", 2), ("2", 2)
- 378 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 21:06:21.05 ID: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 名前: mailto:sage [2019/12/18(水) 22:57:24.30 ID:tbeJyQYA.net]
- >>371
理論はどうでもいいから動く
- 380 名前:コードを出して欲しいです、このスレ的には []
- [ここ壊れてます]
- 381 名前:デフォルトの名無しさん mailto:sage [2019/12/18(水) 23:01:39.59 ID:i+6d3gEf.net]
- ここまで出来ればあとは簡単
他の人に任せた
- 382 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 00:58:04.71 ID:1AoIgbUn.net]
- >>317 文言 wenyan-lang
wenyan-lang.lingdong.works/ide.html 吾有一術。名之曰「零右寄」。欲行是術。必先得一數。曰「数」。乃行是術曰。 吾有三數。曰零。曰零。曰一。名之曰「甲」曰「乙」曰「丙」。 恆為是。若「数」等於零者乃止也。除「数」以十。所餘幾何。昔之「甲」者。今其是矣。 若「甲」等於零者。乘「乙」以十。昔之「乙」者。今其是矣。若非。乘「甲」以「丙」。 加其以「乙」。昔之「乙」者。今其是矣。也。除「数」以十。昔之「数」者。今其是矣。 除其以一。所餘幾何。減「数」以其。昔之「数」者。今其是矣。 乘「丙」以十。昔之「丙」者。今其是矣。云云。乃得「乙」。是謂「零右寄」之術也。 吾有一列。名之曰「丁」。充「丁」以二千零一十九。以一十萬二千零三十。以一百二十三。 凡「丁」中之「戊」。施「零右寄」於「戊」。名之曰「己」吾有三數。曰「戊」。曰「「、」」。曰「己」。書之。云云。 OUTPUT --------------------- 二千零一十九、二千一百九十 一十萬二千零三十、一十二萬三千 一百二十三、一百二十三 なんかGIGAZINEで紹介されていたので
- 383 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 03:38:08.86 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 03:43:24.67 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 04:34:36.23 ID: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 名前:デフォルトの名無しさん [2019/12/19(木) 07:01:53.01 ID:NLbJ7Izu.net]
- >>317 J
f =: 3 : 0 a =. ": y b =. a -. '0' ". b , a -. b )
- 387 名前:346 mailto:sage [2019/12/19(木) 11:40:09.74 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 13:03:26.44 ID:LRZ6v8WB.net]
- >>375-377
>>371で理論は出来たんだから 次は プログラムにするか 等号の証明をするか 最短手順を調べるか 本数を増やすか ではないでしょうか? 私は>>371で満足 出題者ありがとう
- 389 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 14:49:39.96 ID:i+MhtJYW.net]
- >>380
う〜む、等号の証明でござる。
- 390 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 16:03:07.29 ID:POC72xQm.net]
- どれが?
- 391 名前:デフォルトの名無しさん [2019/12/19(木) 16:34:48.53 ID:dMnFAlGo.net]
- お題
MY FAVORITE SONGS を、Snake, Camel, Pascal にして! my_favorite_songs, myFavoriteSongs, MyFavoriteSongs
- 392 名前:デフォルトの名無しさん [2019/12/19(木) 17:08:15.12 ID:0uPukb6z.net]
- >>346
Kotlin script ただ馬鹿正直に抜き出して足すだけ。 println((1..1000).filter { it % 3 == 0 || it % 5 == 0 }.sum())
- 393 名前:デフォルトの名無しさん [2019/12/19(木) 17:42:54.73 ID:0uPukb6z.net]
- >>383
Kotlin https://paiza.io/projects/7P7YwhEfK-TZri123sI5xg
- 394 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 19:39:18.71 ID: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 名前:デフォルトの名無しさん [2019/12/19(木) 20:42:11.68 ID:M6N2QgoX.net]
- >>351 >>362 Common Lisp
https://ideone.com/hTxKo6 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* が遅いから ざっと六倍もの時間がかかった
- 396 名前:デフォルトの名無しさん [2019/12/19(木) 21:46:59.61 ID:XnN+NvoA.net]
- >>383
R https://ideone.com/QeSUF5
- 397 名前:デフォルトの名無しさん mailto:sage [2019/12/19(木) 22:59:23.08 ID:L7o4TfDh.net]
- >>371
f(m,n)≧2mn+m+n+1 が示せました (2,2)の条件で13枚移動できます
- 398 名前:383 mailto:sage [2019/12/20(金) 14:24:42 ID:A+TGdcd9.net]
- >>383
Ruby で、 ary = "MY FAVORITE SONGS".split.map( &:downcase ) # すべて小文字へ puts ary.join( "_" ) #=> my_favorite_songs puts ary.map( &:capitalize ).join #=> MyFavoriteSongs puts ary.map.with_index { |word, idx| if idx == 0 word # 最初だけ、そのまま else word.capitalize end }.join #=> myFavoriteSongs
- 399 名前:デフォルトの名無しさん [2019/12/20(金) 17:55:37.64 ID:KHh/7LOP.net]
- >>346 julia
println(sum(Set([3:3:1000; 5:5:1000])))
- 400 名前:デフォルトの名無しさん [2019/12/20(金) 19:38:12.53 ID:KibkA5Ab.net]
- お題(>>346の改変版)
1から100万までの整数のうち、2か3か5か7か11か13か17か19の倍数の合計を 求める処理を3000回繰り返してから、結果を表示せよ。ただし、ideoneの 実行制限時間(5秒)以内に完了すること。
- 401 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 20:40:12.54 ID:l1czkVGZ.net]
- >>392 C++
https://ideone.com/N01T86
- 402 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 21:09:48.70 ID:ZH5ZbPnE.net]
- 今アップしようと思ったら
>>393とそっくりだった
- 403 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 21:22:01.32 ID:ZH5ZbPnE.net]
- 素数の数をカウントする代わりに
マイナスを付けて素数を掛け算してるのが違うくらい
- 404 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 21:28:45.69 ID:ZH5ZbPnE.net]
- お題
3000回じゃなくてもっとマシな出し方なかったのかね? 最適化で1回の結果を使い回されて何回やっても時間同じになっちゃってたよ 3000回数分合計して、最後に3000で割ってたんだけど 最適化が頭良すぎた
- 405 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 21:49:16.14 ID:qHTdS2+z.net]
- やったー僕が考えた効率良いプログラムだと5秒以内で3000回も計算できたぞ!
そうだこれを
- 406 名前:お題にしてやろう! []
- [ここ壊れてます]
- 407 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:16:29.10 ID:ZH5ZbPnE.net]
- C/C++だと
ほんのちょっと数学の知識を使えば コード上の工夫をまったくしなくても0.01秒 コード上の工夫でまだまだ速くなる スクリプト系言語でも100倍はかからない気がする なぜ5秒? なぜ1000000? なぜ3000回? 謎だ
- 408 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:30:48.36 ID:fz/tpFJr.net]
- 些末な最適化など
数学的知識に基づくオーダーの低減に比べたらむなしい
- 409 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:30:49.77 ID:ZH5ZbPnE.net]
- 数学的知識を使わないで
単純に足していくアルゴリズムを コードの工夫で5秒切るって問題?
- 410 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:38:11.88 ID:PCNOOvYP.net]
- >>399
>>393は素数の数に対してオーダーは2^n nだけど、 コード上の工夫で2^nになる さらに、 乗算の数十倍時間がかかる、変数による除算も コード上の工夫で無くせる 些細な差では無いと思う
- 411 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:38:43.75 ID:ZH5ZbPnE.net]
- >>399
>>393は素数の数に対してオーダーは2^n nだけど、 コード上の工夫で2^nになる さらに、 乗算の数十倍時間がかかる、変数による除算も コード上の工夫で無くせる 些細な差では無いと思う
- 412 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:39:52.16 ID:ZH5ZbPnE.net]
- ダブった
- 413 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 22:50:38.46 ID:qHTdS2+z.net]
- 数学も計算機学もどっちも大事
- 414 名前:デフォルトの名無しさん [2019/12/20(金) 23:00:03.89 ID:KibkA5Ab.net]
- >>393
正解。ちなみにRで短く書いたプログラム: https://ideone.com/T9oDqa 結局、奇数個の積の倍数の個数の和から偶数個のそれを引くというやり方は同じだな。 >>397 そう。上のプログラムが5秒以内に余裕を持って終わるように繰り返し回数を設定したw 効率というより短いのが好きで書いた。 >>398 >>393をRにそのまま移植すると5秒以内に終わらず、1000回に減らしても (https://ideone.com/K94wA8)4.56秒かかって、上のプログラムの2.43秒より 遅いよ。Rでは自前のループを書くよりも、関数や演算子を使って短く書いた方が 速くなることが多い。
- 415 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 23:06:22.58 ID:ZH5ZbPnE.net]
- >>405
Rだと3桁倍も時間がかかるのか 衝撃
- 416 名前:デフォルトの名無しさん [2019/12/20(金) 23:10:59.45 ID:KibkA5Ab.net]
- 1000までではなく与えられた自然数までということ以外は>>346と同じ問題が
オライリーの「Modern C++チャレンジ」に載っているが、示されている解答は if (i % 3 == 0 || i % 5 == 0) sum += i; という単純に足していく方式だな。 本の副題は「C++17プログラミング力を鍛える100問」だが、何が鍛えられられるのか よく分からない。
- 417 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 23:11:25.23 ID:ZH5ZbPnE.net]
- C/C++で1秒かかる問題は
C/C++限定になっちゃう感じだね
- 418 名前:デフォルトの名無しさん mailto:sage [2019/12/20(金) 23:14:31.11 ID:ZH5ZbPnE.net]
- >>407
算数やアルゴリズムじゃなくて 言語の勉強ってことでしょ
- 419 名前:デフォルトの名無しさん mailto:sage [2019/12/21(土) 05:43:11.08 ID:vVh8rrgH.net]
- 連投アスペ君うざいよ
学歴詐称までしてたみたいだけど
- 420 名前:デフォルトの名無しさん [2019/12/21(土) 17:30:00.35 ID:BSqycIZI.net]
- お題
ビットコインの採掘問題です 000 〜 300 までの3桁の整数の文字列を、MD5 で暗号化した時に、 冒頭部分から、5 が最も多く続く、整数は何? 答え、239 : 555d6〜
- 421 名前:デフォルトの名無しさん [2019/12/21(土) 21:23:49.40 ID:WOeaPgYE.net]
- >>411
Java https://paiza.io/projects/CEzxtHHxdDnP_sglVIdxMg
|

|