1 名前:デフォルトの名無しさん mailto:sage [2021/06/19(土) 00:02:57.84 ID:MQWrKSb7.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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part19 https://mevius.5ch.net/test/read.cgi/tech/1606662245/
702 名前:デフォルトの名無しさん [2022/08/13(土) 18:53:16.03 ID:jyB6kjuE.net] >>666 Common Lisp https://ideone.com/NMCh3O
703 名前:デフォルトの名無しさん [2022/08/13(土) 19:08:33.35 ID:jyB6kjuE.net] >>668 投稿後一部訂正、n の範囲チェックを追加 負数は弾く (check-type n (integer 0 *)) 上限はシーケンスの長さ (loop repeat n ↓ (loop (min n (length sequence))
704 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 19:54:15.55 ID:JW3gpbYe.net] >>666 octave https://ideone.com/Iml4xq f = @() sort(randperm(37, 7)); cell2mat(arrayfun(@(~) {f()}, (1:5)'))
705 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 00:39:46.54 ID:YzvfyuVN.net] >>666 Kotlin script repeat(5) { println((1..37).toList().shuffled().slice(0..6).sorted()) } 実行例 [6, 7, 9, 10, 16, 2
706 名前:2, 27] [2, 8, 9, 11, 16, 32, 33] [11, 13, 18, 25, 26, 30, 34] [2, 3, 12, 14, 20, 27, 37] [7, 13, 14, 19, 27, 30, 35] [] [ここ壊れてます]
707 名前:671 mailto:sage [2022/08/14(日) 00:41:50.08 ID:YzvfyuVN.net] >>671 はこれでも同じだった (toList() 抜き)。 repeat(5) { println((1..37).shuffled().slice(0..6).sorted()) }
708 名前:96 mailto:sage [2022/08/14(日) 01:45:55.09 ID:jl8HjsTF.net] >>666 Perl5 use List::Util 'shuffle'; @a = 1..37; $" = ', '; print "@{[(shuffle@a)[0..6]]}\n" for 1..5; 実行結果 $ perl 20_666_shuffle1-37x5.pl 3, 2, 10, 25, 9, 23, 27 35, 6, 30, 8, 37, 29, 36 20, 29, 19, 18, 37, 21, 23 12, 30, 29, 7, 3, 31, 26 34, 12, 1, 14, 28, 2, 21
709 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 01:54:16.92 ID:v+rcxIed.net] >>673 ソートされてないじゃん
710 名前:96 mailto:sage [2022/08/14(日) 01:59:26.66 ID:jl8HjsTF.net] >>666 Perl5、>>673 は sort するの忘れてた…orz use List::Util 'shuffle'; @a = 1..37; $" = ', '; print "@{[sort{$a <=> $b} ((shuffle @a)[0..6])]}\n" for 1..5; 実行結果 $ perl 20_666_shuffle1-37x5.pl 5, 9, 22, 28, 30, 32, 36 1, 2, 7, 21, 23, 26, 36 6, 14, 15, 16, 19, 26, 28 13, 14, 15, 16, 30, 35, 37 1, 3, 10, 20, 27, 29, 30
711 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 12:35:56.93 ID:JoIEy2rI.net] >>666 ocaml https://ideone.com/3UpGQV let seq b e = let rec aux acc n = if n < b then acc else aux (n :: acc) (pred n) in aux [] e let (<<) f g x = f (g x) let take n = let rec aux acc n = function [] -> acc | x :: xs -> if n <= 0 then acc else aux (x :: acc) (pred n) xs in List.rev << aux [] n let shuffle = List.map snd << List.sort compare << List.map (fun x -> (Random.bits (), x)) let string_of_ints = Printf.sprintf "[%s]" << String.concat "; " << List.map string_of_int let f () = string_of_ints @@ List.sort compare @@ take 7 @@ shuffle @@ seq 1 37 let () = Random.self_init (); List.iter (print_endline << f << ignore) @@ seq 1 5
712 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>666 c https://ideone.com/EHr86S
713 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 21:45:18.38 ID:b/j10zkL.net] (1) aとbからなる文字列があるときその中で部分文字列bbaが最初に完成する文字数を求める ab -> 0 aaa -> 0 bba -> 3 bbba -> 4 babbab -> 5 bbabbaa -> 3 (2) ちょうど50文字のaとbからなる全ての並びの文字列の内 50文字目(最後)にbbaが完成するのは何通りあるか? 長さ3文字で3文字目に完成するのはbbaのひとつだけ 長さ4文字で4文字目に完成するのはabbaとbbbaの二通り
714 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>678 Ruby (1) %w[ab aaa bba bbba babbab bbabbaa].each do |s| i = s =~ /bba\K/ puts '%s -> %d' % [s, i ? i + 3 : 0] end # => ab -> 0 aaa -> 0 bba -> 3 bbba -> 4 babbab -> 5 bbabbaa -> 3 (2) f = -> (n, a=[0, 0, 1]) {return a[n] if n<a.size; a<<f[n-1,a]+f[n-2,a]+1;a.last} p f[49] # => 12586269024
715 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:30:32.35 ID:z6QFcjeU.net] 行列の掛け算を実装せよ 二次正方行列 A=((1 -2) (2 3)), B = ((-2 1)(3 -1)) について AB, BA を求めよ 可能であれば二次正方行列以外の行列についても対応せよ 実装の細かい点については出題者は指定しないので良きに計らって結構。 <お願い> 行列の積において結合則成立の証明を教えてください
716 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:43:04.52 ID:0XTzAkvO.net] >>678 c https://ideone.com/hlf3c3 ・(1)(2)ともに自信なし(たぶんお題の意味わかってない)
717 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:49:01.35 ID:gf0q/4T2.net] >>680 Ruby Matrixクラス不使用 def product(a, b)
718 名前:[ [a[0][0] * b[0][0] + a[0][1] * b[1][0], a[0][0] * b[0][1] + a[0][1] * b[1][1]], [a[1][0] * b[0][0] + a[1][1] * b[1][0], a[1][0] * b[0][1] + a[1][1] * b[1][1]], ] end p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]]) # => [[-8, 3], [5, -1]] # 夏休みの宿題は自分でやりましょう [] [ここ壊れてます]
719 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 22:51:54.64 ID:7JC7m3TJ.net] >>682 >二次正方行列以外の行列についても対応せよ
720 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 23:05:21.92 ID:gf0q/4T2.net] >>680 >>683 def product(a, b) m = a.first.size c = Array.new(a.size){[]} a.size.times do |i| b.first.size.times do |j| c[j][i] = m.times.map{|k| a[k][i] * b[j][k]}.sum end end c end p product([[1, -2], [2, 3]], [[-2, 1], [3, -1]]) # => [[0, 7], [1, -9]] p product([[-2, 1], [3, -1]], [[1, -2], [2, 3]]) # => [[-8, 3], [5, -1]]
721 名前:デフォルトの名無しさん [2022/08/14(日) 23:09:42.44 ID:ct8M+Uij.net] NxMのデータをどう定義するか だけの問題だな 毎回悩む 下は後悔してるタイプ (defparameter *position-IO* (loop for input in '(7 8 9 4 5 6 1 2 3) for pos below 9 collect (cons input pos)))
722 名前:デフォルトの名無しさん [2022/08/15(月) 00:42:19.42 ID:PTEGgn5Q.net] >>679 どういう頭してたらその法則性に気づくん???
723 名前:デフォルトの名無しさん [2022/08/15(月) 01:31:39.90 ID:b/MTJSvV.net] >>678 Kotlin script (1) listOf("ab","aaa","bba","bbba","babbab","bbabbaa").forEach { print("$it ->"); it.indexOf("bba").let { if (it >= 0) println(it + 3) else println(0) } } 実行時の出力 ab ->0 aaa ->0 bba ->3 bbba ->4 babbab ->5 bbabbaa ->3 (2) println(1L shl (50 - 3)) 実行時の出力 140737488355328
724 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 01:56:11.12 ID:RG8mAl+Q.net] (2) 出題の仕方が間違ってた 最後に唯一のbbaが現れるパターンと書くべきだった 自分の中ではこのことしか考えてなかったから >>679 さんは汲んでくれたようで、早さにも驚いたけど
725 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 09:19:59.19 ID:jWRkxbjN.net] なるほど, 再帰的に構成すればいいのか aから始まる時: a + x[n-1] baから始まる時: ba + x[n-2] bbから始まる時: bb...bba
726 名前:デフォルトの名無しさん [2022/08/15(月) 09:43:22.06 ID:90U51paY.net] >>686 そういう漸化式は普通に受験で良くでてくる
727 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:00:11.92 ID:ioAOBwsA.net] >>680 https://ideone.com/umJbre https://ja.wikibooks.org/wiki/%E7%B7%9A%E5%9E%8B%E4%BB%A3%E6%95%B0%E5%AD%A6/%E8%A1%8C%E5%88%97%E3%81%A8%E8%A1%8C%E5%88%97%E5%BC%8F/%E7%AC%AC%E4%B8%89%E9%A1%9E/%E8%A1%8C%E5%88%97%E3%81%AE%E7%A9%8D#matrix's-associativity
728 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:16:58.66 ID:RVV7PTHo.net] >>691 c https://ideone.com/47VxwF ・二次元でintのみ
729 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 17:19:53.25 ID:RVV7PTHo.net] >>680 https://ideone.com/47VxwF ・二次元でintのみ
730 名前:693 mailto:sage [2022/08/16(火) 16:05:44.79 ID:y+iYdbLW.net] >>680 c https://ideone.com/lWljpL ・>>693 から若干の整理 ・インデントも修正
731 名前:デフォルトの名無しさん [2022/08/16(火) 19:29:50.25 ID:6LZk+vGC.net] >>688 え?言ってる意味がわからない。どういうこと?
732 名前:デフォルトの名無しさん [2022/08/16(火) 20:01:21.15 ID:xodQRDI1.net] bba+gge=momo
733 名前:デフォルトの名無しさん [[ここ壊れてます] .net] >>695 末尾以外にbbaが現れる文字列を除外するってことじゃろう
734 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:15:34.85 ID:dhC56AkH.net] bbaが最後に達成されるんじゃなければ2^47計算するだけのなん
735 名前:フ面白みもない問題になるからそこで気付く人は気づくよね [] [ここ壊れてます]
736 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 23:04:49.04 ID:mbmTGUKF.net] ついでに50文字で今度は最後がbbaじゃなくて bbbのときとbabのときのそれぞれのパターン数を求めるって問題
737 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 01:28:19.97 ID:0f27vmNE.net] >>697 なるほど。やっと意味がわかった。
738 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:04:15.12 ID:UFtMHmKs.net] お題:分割されている顔文字を結合して表示してください 1つの顔文字は半角4字で構成。左右対称。2字ずつ半分に分割されてシャッフルされている 出力する顔文字の順番は自由とする 入力 < ^)(^ 出力 > (^^) 入力 < ^)(-(^-)(vv) 出力 > (^^)(--)(vv)
739 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 14:59:27.47 ID:2ZT38iyw.net] お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」をそれぞれ表示する方法を示してください 便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。 0 1 2 3 4 5 6 7 8 ... ...............80 左から1列目の9マスは
740 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 15:10:22.08 ID:2ZT38iyw.net] 途中送信してしまった お題:ナンプレ(数独)における「縦9マス(列)」「横9マス(行)」「3x3マス」のマスをそれぞれ表示する方法を示してください ※便宜的に、ナンプレのマスには左上から右へ、右下に向かい0〜80までの数値を入れます。 0 1 2 3 4 5 6 7 8 ... ...............80 例えば左から1列目の9マスは [0 9 18 27 36 45 54 63 72] となります。 等差を利用して数字だけを表示するものは不可です。 マスに何の値が入っていても表示できるようにしてください。
741 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 21:47:42.92 ID:GkJOOerG.net] >>703 c https://ideone.com/lBKsc9
742 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 23:34:27.13 ID:yTY/OYLu.net] >>701 (><)
743 名前:デフォルトの名無しさん [2022/08/18(木) 02:15:12.90 ID:KCyiWPRI.net] >>703 perl5 https://paiza.io/projects/amKhSF3cnp1Ny5-2yWLO4g
744 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 03:07:13.35 ID:dBOjwuYR.net] >>701 JavaScript > ['^)(^', '^)(-(^-)(vv)', '<)(>'].map((R => input => Array.from(input.matchAll(/\((.)/g)).reduce((output, [l, r]) => output + l + R(r) + ')', ''))(r => r == '>' ? '<' : r)) [ '(^^)', '(--)(^^)(vv)', '(><)' ]
745 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>701 Ruby f = -> str do loop do str.sub!(/(.)\)(.*)\(\1/, '(\1\1)\2') || str.sub!(/\((.)(.+)\1\)/, '(\1\1)\2') || (break str) end end %w[ ^)(^ ^)(-(^-)(vv) (-(^-)^)].each do |s| puts '%s -> %s' % [s, f[s.b]] end # => ^)(^ -> (^^) ^)(-(^-)(vv) -> (^^)(--)(vv) (-(^-)^) -> (--)(^^)
746 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>703 Ruby PLACEHOLDER = [*0..80] field = 9.times.reduce([]) do |s, y| s << 9.times.map do |x| PLACEHOLDER[9 * y + x] end end puts field.map{|r| r.map{'%02d' % _1}.join} # => 000102030405060708 091011121314151617 181920212223242526 272829303132333435 363738394041424344 454647484950515253 545556575859606162 636465666768697071 727374757677787980
747 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>703 お題をよく読んでいなかった >>709 の続き row = -> (n, field) {field[n]} column = -> (n, field) {field.map{_1[n]}} block = -> (n, field) {9.times.map{n * 3 + n / 3 * 18 + _1 + _1 / 3 * 6}.map{field.flatten[_1]}} puts row[7, field].join(?,) # => 63,64,65,66,6
748 名前:7,68,69,70,71 puts column[7, field].join($/) # => 7 16 25 34 43 52 61 70 79 puts block[7, field].each_slice(3).map{_1.join(?,)}.join($/) # => 57,58,59 66,67,68 75,76,77 [] [ここ壊れてます]
749 名前:704 mailto:sage [2022/08/18(木) 23:38:15.48 ID:YBxy/c4L.net] >>703 c https://ideone.com/0yXRih ・>>704 から若干の整理
750 名前:デフォルトの名無しさん [2022/08/19(金) 23:42:01.44 ID:GkIv/1vJ.net] お題 <user>:<group>の数 <user>:<group> <user>:<point>の数 <user>:<point> が入力されます <group>ごとに<point>を集計して<group>順に <group>:<point>を出力してください 例) // 入力 6 UserE:GroupC UserD:GroupA UserB:GroupC UserA:GroupC UserC:GroupB UserF:GroupB 6 UserB:3 UserF:2 UserD:5 UserC:13 UserE:11 UserA:7 // 出力 GroupA:5 GroupB:15 GroupC:21
751 名前:デフォルトの名無しさん [2022/08/19(金) 23:58:05.14 ID:zRvvDV0W.net] なんで数を入力してるんだ? 後の情報であきらかではないか まさかグループ名が整数でも良いと考えている?
752 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:02:54.24 ID:xIohwuBb.net] >>712 Ruby g, p = str.split(/^\d+$/)[1, 2].map{_1.strip.each_line.map{|s| s.chomp.split(?:)}.to_h} puts g.reduce(Hash.new(0)){|h, (k, v)| h[v] += p[k].to_i; h}.sort.map{_1.join(?:)} # => GroupA:5 GroupB:15 GroupC:21
753 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 07:49:15.49 ID:/HXUcxOA.net] // >>712 Node.js import readline from 'node:readline'; const rl = readline.createInterface({input: process.stdin, output: process.stdout}); const all = [/* {user, group, point}, ... */]; let usergroup = false; rl.on('line', line => { line = line.trim(); if (line) { if (/^\d+$/.test(line)) { usergroup = !usergroup; } else if (usergroup) { const {groups} = line.match(/^(?<user>[^:]+):(?<group>[^:]+)$/); all.push(groups); } else { const {groups: {user, point}} = line.match(/^(?<user>[^:]+):(?<point>\d+)$/); Object.defineProperty(all.find(_ => _.user == user), 'point', {value: Number(point), enumerable: true}); } } else { rl.close(); } }); rl.on('close', () => { for (const [group, point] of Object.entries(all.reduce((gp, {group, point}) => {gp[group] = (gp[group] ?? 0) + point; return gp;}, {})).sort(([a], [b]) => a < b ? -1 : 1)) { console.log(`${group}:${point}`); } });
754 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 17:09:35.31 ID:tvd+mgyM.net] >>712 c https://ideone.com/Edol3U
755 名前:デフォルトの名無しさん [2022/08/20(土) 21:26:59.76 ID:myFbjTal.net] >>712 C# https://paiza.io/projects/IAgPLTHFbJ-HmDcLHFrNYA
756 名前:デフォルトの名無しさん [2022/08/20(土) 22:24:09.90 ID:5JSGWnVi.net] >>703 ってこれじゃだめなのかな 7行で書ける https://ideone.com/eKTMZr
757 名前:96 mailto:sage [2022/08/21(日) 02:42:00.00 ID:P6BPpVvp.net] >>712 Perl5 use feature qw{say signatures}; no warnings "experimental::signatures"; sub ($n, @a) { $h{$$_[0]} = $$_[1] for map{[/(\w+)/g]} @_[1..$n]; sub ($m, @) { $g{$h{$$_[0]}} += $$_[1] for map{[/(\w+)/g]} @_[1..$m]; }->(@a[$n..$#a]); say "$_:$g{$_}" for sort keys %g; }->(<>); ※見易くするためインデントを全角スペースに置換してあります。 実行結果: https://ideone.com/GxsRSY
758 名前:デフォルトの名無しさん [2022/08/21(日) 06:03:07.44 ID:V5T4kdVo.net] >>712 <group>順にって、何を元にして group の順序を決めるの? 入力された順?それだと例の入力のように GroupC, GroupA, GroupC の順で来ている場合はどうするの?
759 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 07:03:57.35 ID:3JIuIXQv.net] <group>毎という事だと思う サンプル見るとgroup名か集計したpointの昇順かも知れないけどそこはどうとでもなりそうだし
760 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 08:49:24.60 ID:0ZMA3aWJ.net] >>713 実際にここでも数字を使っている例が出て来てるからわかると思うけど 競プロなんかではよくあるフォーマットだよ
761 名前:デフォルトの名無しさん [2022/08/21(日) 18:07:19.66 ID:ecIOs+Jg.net] >>666 C# https://paiza.io/projects/sT_SLT3n0NNab0a-ZD7IHQ
762 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:28:38.88 ID:Y2TZP89X.net] お題:Hello, World!を出力中にプログラムを強制終了せよ Hello, World!が完全に出力されたらGAME OVERとする
763 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:45:13.28 ID:ui07Fbeq.net] >>724 Ruby Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'} Thread.new{exit} # => Hello, World!
764 名前:デフォルトの名無しさん [2022/08/21(日) 18:49:48.17 ID:ecIOs+Jg.net] >>701 C# https://paiza.io/projects/D1PZTVPBn2qnksCQnwYQmw?language=csharp
765 名前:デフォルトの名無しさん mailto:sage [2022/08/21(日) 18:51:27.42 ID:ui07Fbeq.net] >>725 訂正 Thread.new{'Hello, World!'.each_char{|c| print c; sleep 0.01}; raise 'GAME OVER'} Thread.new{exit!} # => H
766 名前:デフォルトの名無しさん [[ここ壊れてます] .net] >>703 C# https://paiza.io/projects/HzrEP1l1vX4Z3JUqmHSUwg
767 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] >>724 c https://ideone.com/xaMOR7
768 名前:デフォルトの名無しさん [[ここ壊れてます] .net] >>648 C# https://paiza.io/projects/2cxaJzBNbukA4-EolW07Cw
769 名前:729 mailto:sage [2022/08/22(月) 19:20:01.17 ID:7CA3B9Dd.net] >>724 c https://ideone.com/k8R7TU ・>>729 どう見ても正常終了です。本当にありがとうございました。 ・子プロセスの強制終了を見届けてから自分自身も強制終了
770 名前:デフォルトの名無しさん [2022/08/25(木) 15:38:14.81 ID:bJn+zm7R.net] >>724 その強制終了って人間が Ctrl + C を押すなどしてやるという意味? 間に合わずに全部出力し切った場合は GAME OVER 出すということ?
771 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 15:52:23.73 ID:BfuXla1W.net] >>732 強制終了→exit(0)などでプログラム的に終了させる GAME OVER→お題の達成失敗
772 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 16:09:53.36 ID:6j74uL6b.net] 54.144.0.0/12といったどこかで見たことあるような形式の文字列を入力すると ^(?!(54.144.|54.145.|54.146.|54.147.|54.148.|54.149.|54.150.|54.151.|54.152.|54.153.|54.154.|54.155.|54.156.|54.157.|54.158.|54.159.)) といったいい感じの文字列が標準出力に出力されるやつ、誰か作れますか? 例の他にも54.208.0.0/13 54.216.0.0/14 54.192.0.0/12 54.160.0.0/11 54.220.0.0/15といった似た感じの文字列が入力され やはりいい感じに処理された別の文字列が出力されます できればライセンスはゼロ条項BSDライセンスでお願いします
773 名前:デフォルトの名無しさん [[ここ壊れてます] .net] ま、まあ、作れなくはないかな…
774 名前:デフォルトの名無しさん [2022/08/25(木) 18:48:07.98 ID:0xws5w3m.net] フワっとした頭の中にしか定義されてない案件なんて誰もこなせないぞ 本人以外は
775 名前:デフォルトの名無しさん [2022/08/25(木) 20:40:48.98 ID:0z7AphVM.net] >>734 Java https://paiza.io/projects/Fot4E7hZfbJ95P_hSbI3NQ
776 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 21:10:16.35 ID:/BGaqBqg.net] >>734 JavaScript function _734(ip_range) { const result = []; const as = ip_range.split(/\D/).map(_ => Number(_)); const m = as.at(-1); const q = Math.floor(m / 8
777 名前:); const r = m % 8; const e = 8 - r; const l = as[q].toString(2).padStart(8, '0').slice(0, r); for (let i = 0, sup = 2 ** e; i < sup; i++) { as.splice(q, 1, Number.parseInt(l + i.toString(2).padStart(e, '0'), 2)); result.push(as.slice(0, q + 1)); } return '^(?!(' + result.map(_ => `${_.join('\\.')}${q < 3 ? '\\.' : ''}`).join('|') + '))'; } [] [ここ壊れてます]
778 名前:デフォルトの名無しさん mailto:sage [2022/08/25(木) 22:00:47.00 ID:JPPVgQ9Y.net] beer licenseでよければ書くが
779 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:09:37.08 ID:NIKxWs5c.net] 割とすぐに出来るもんなんですね どちらも実用上問題なさそうな、いい感じの実行結果です >738は最新の実行環境に心当たりがなかったので確認に手間どりましたが Chromeのコンソールから実行して確認できました (cscriptで実行しようとしたらat()に対応してなかったので) いやー勉強になります、ありがとう
780 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 04:49:22.52 ID:0rX9u4fb.net] >>740 スレタイも読めないアホは消えろ
781 名前:96 mailto:sage [2022/08/26(金) 05:19:52.33 ID:GgZblxs6.net] >>740 人をタダで利用してない?
782 名前:デフォルトの名無しさん [2022/08/26(金) 11:51:47.61 ID:d54FvNjc.net] >>733 マルチスレッドかマルチタスクで "Hello, world!" を出力する処理と、ランダムなタイミングでそれを強制終了させる処理が動くということで良いのか? そして出力中に停止できなかったら "GAME OVER" が最後に出ると。
783 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 14:32:15.45 ID:71YXfdUw.net] >>743 その実装でもいいよ 題意はいかにHello, World!出力中にプログラムを終了させるかだから sleep挟んでもいい
784 名前:デフォルトの名無しさん [2022/08/26(金) 18:44:07.03 ID:NQ4mbOjq.net] >>733 #!/usr/bin/env sh cat <<"EOL" | perl -ne '/(Hello, World)(?:[!])/ ? die " $1 got failed." : print' > foo > bar > baz > Hello, World > Hello, World > Hello, World! > you can't see me, right? > EOL foo bar baz Hello, World Hello, World Hello, World got failed. at -e line 1, <> line 6.
785 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:28:18.28 ID:NIKxWs5c.net] はて?プログラミングのお題を投げて、競技的な興味をもって答えたくなった人が答え その回答に興味があれば参照して「普段は扱ってないこの言語だとそういうやりかたなのか」 「自分とは違うスマートなやり方があったのか」と思ったりするスレ、という理解でしたが もしかして投げたときに”お題”という文字が抜けてたのが問題ありましたか? 概ね正解とするに足る実行結果を、実用上問題なさそうと表現したことが拙かったですか? もしそうなら申し訳ない、次からは気をつけます
786 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 21:31:39.94 ID:NIKxWs5c.net] ついでというかなんというか>734の自分のお題に対する自己回答です(色々と手抜きしてありますが) #!/usr/bin/ksh function proc { typeset A B C D E F N M L I IFS='.','/' read A B C D E <<XYZ $1 XYZ let N="(${E}+8)/8" let M="8-(${E}%8)" if [ $N -eq 5 ]; then echo -n "${A}.${B}.${C}.${D}"; return; fi set -A BASE dummy "" "${A}." "${A}.${B}." "${A}.${B}.${C}." set dummy $A $B $C $D; shift $N; F=$1; let L="$F-1+(1<<$M)" for I in `seq $F $L`; do echo -n "|${BASE[$N]}${I}."; done; } if [ $# -eq 0 ]; then echo "need CIDR/s"; exit 65; fi set -A CIDR dummy $@; echo -n "^(?!dummy"; for I in `seq 1 $#`; do proc ${CIDR[$I]}; done; echo ")" exit 0
787 名前:96 mailto:sage [2022/08/29(月) 02:30:43.54 ID:QAZMtAov.net] >>734 Perl5 for (<>) { print; @a = /(\d+)/g; $w = pop @a; $o = ($w - 1) >> 3; $m = $w - $o * 8; $n = 2**(8 - $m); $l = join '.', @a[0..$o-1]; $l .= '.' if '' ne $l; $h = $a[$o] & (255 << (8 - $m)); $r = $o < 3 ? '.' : ''; @b = map{$l . ($h + $_) . $r} 0..($n - 1); print '^(?!(' . join('|', @b) . "))\n"; print "\n"; } ※見易くするためインデントを全角スペースに置換しています。 実行例: https://ideone.com/VBJMMo
788 名前:96 mailto:sage [2022/08/29(月) 02:55:16.14 ID:QAZMtAov.net] >>748 128.0.0.0/1 の結果が変 バグ入りだ、ゴメンチャイ
789 名前:96 mailto:sage [2022/08/29(月) 03:01:45.22 ID:QAZMtAov.net] あれ?いいのかな? 仕様を推測して作ったけどちょっと混乱したかも… 寝るわ
790 名前:デフォルトの名無しさん [2022/09/09(金) 22:29:09.28 ID:zwPgoVui.net] お題 長方形の1辺の長さのリストと正方形の面積のリストが入力されます それぞれの正方形の面積について 長方形の1辺の長さのリストから2つを選んで掛け合わせ長方形の面積を計算します 長方形の面積が正方形の面積以上でかつ最小の面積となる組み合わせを探して出力してください 見つからなかった場合はerrorを出力してください (例) // 1辺の長さのリスト [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] // 正方形の面積のリスト [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] // 出力 390:error 240:16,17 37:3,13 396:error 198:11,18 99:6,17 242:16,17 53:3,18 329:error 202:13,16
791 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:02:00.41 ID:Un8DgV3E.net] >>751 a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] c = a.group_by(&:itself).values.map{_1.size > 2 ? _1[0, 2] : _1}.flatten.permutation(2).map{[_1 * _2, [_1, _2].sort]}.uniq.sort.to_h b.each{|s| puts '%d: %s' % [s, c.find{_1[0] >= s}&.[](1)&.join(?,) || :error]} # => 390: error 240: 16,17 37: 3,13 396: error 198: 11,18 99: 6,17 242: 16,17 53: 3,18 329: error 202: 13,16
792 名前:デフォルトの名無しさん mailto:sage [2022/09/09(金) 23:46:43.88 ID:3788iROh.net] >>751 ruby https://ideone.com/hBHe51 def f(as, bs) c = as.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort_by(&:first).each_cons(2) bs.map do |b| d = c.find {|e, f| e[0] < b && b <= f[0]} "#{b}:#{d ? d[1][1..2].join(',') : 'error'}" end end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] puts f(a, b)
793 名前:753 mailto:sage [[ここ壊れてます] .net] >>751 https://ideone.com/2UDrLT ・>>753 を若干の整理 ・>>752 さんのを見て&.を勉強 def f(a, b) c = a.combination(2).map(&:sort).to_a.uniq.map {|x, y| [x * y, x, y]}.sort b.map {|b| "#{b}:#{c.find {|e| b <= e[0]}&.[](1..2)&.join(',') || 'error'}"} end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1] b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202] puts f(a, b)
794 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 00:34:04.51 ID:sDbT/M8A.net] みんな解くのはえーなぁ
795 名前:96 mailto:sage [2022/09/10(土) 02:29:07.85 ID:7pWsuKpo.net] >>751 Perl5 $ls = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]; $ss = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]; sub f {2 < @_ ? (f(@_[1..$#_]), map{[$_[0] * $_, $_[0], $_]} @_[1..$#_]) : ()} @rs = sort{$$a[0] <=> $$b[0]} f @$ls; for $aa (@$ss) { @b = grep{$aa <= $$_[0]} @rs; print @b ? "$aa:$b[0][1],$b[0][2]\n" : "$aa:error\n"; } 実行結果 $ perl 20_751.pl 390:error 240:17,16 37:3,13 396:error 198:18,11 99:17,6 242:17,16 53:3,18 329:error 202:13,16
796 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 11:29:46.54 ID:q8enYz1J.net] >>751 octave https://ideone.com/WGkm27 function c = f(a, b) u = unique(sort(nchoosek(a, 2), 2), 'rows'); p = prod(u, 2); c = cell(size(b)); for i = 1:numel(b) d = min(p(b(i) <= p)); if isempty(d) c{i} = sprintf('%d:error', b(i)); else s = strjoin(arrayfun(@(n) {num2str(n)}, u(p == d, :)), ','); c{i} = sprintf('%d:%s', b(i), s); end end end a = [17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1]; b = [390, 240, 37, 396, 198, 99, 242, 53, 329, 202]; cellfun(@disp, f(a, b))
797 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 13:32:08.25 ID:q8enYz1J.net] >>751 c https://ideone.com/Cqx8M3 #include <stdio.h> void f(int *a, int *b, int na, int nb) { int i, j, k, found, min, x, y; for (i = 0; i < nb; i++) { found = 0; for (j = 0; j < na; j++) for (k = 0; k < na; k++) if (j != k && b[i] <= a[j] * a[k] && (!found || a[j] * a[k] < min)) found = 1, min = a[j] * a[k], x = a[j], y = a[k]; if (!found) printf("%d:error\n", b[i]); else printf("%d:%d,%d\n", b[i], x, y); } } int main() { int a[] = {17, 3, 3, 1, 6, 13, 11, 17, 2, 5, 7, 18, 16, 5, 8, 6, 5, 1, 11, 1}; int b[] = {390, 240, 37, 396, 198, 99, 242, 53, 329, 202}; f(a, b, sizeof a / sizeof *a, sizeof b / sizeof *b); return 0; }
798 名前:デフォルトの名無しさん [2022/09/10(土) 19:18:11.93 ID:PLqR4TKQ.net] >>751 Kotlin 可能な限り漢字を使ったプログラムにしてみたが、余計にゴチャゴチャしてしまったかな? https://paiza.io/projects/ay4L7Wchnt6lGUvkh6h21A 240 が 16, 17 ではなく 17, 16 のように出るが、まあよかろう。 (リストの順番で覚えているのでこうなる)。
799 名前:デフォルトの名無しさん [2022/09/10(土) 22:25:19.23 ID:7X0yi8nW.net] お題 >>751 の問題について 長方形の1辺の長さをソートして縦方向と横方向に並べて交差するところに長方形の面積を入れて表にします https://downloadx.getuploader.com/g/angel556/90/%E3%81%97%E3%82%83%E3%81%8F%E3%81%A8%E3%82%8A%E6%B3%95.png この図は50を探すところを描いています 青色の斜めの値の中から正方形の面積以上かつ最小の値を見つけその場所を出発点とします 長方形の面積が正方形の面積よりも大きい場合は表を上にたどり、長方形の面積が正方形の面積よりも小さい場合は表を右にたどります 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます しゃくとり虫が動いてるように見えるのでこれをしゃくとり法と呼ぶことにします >>751 の問題をしゃくとり法で解いてください
800 名前:デフォルトの名無しさん [2022/09/10(土) 22:51:25.27 ID:7X0yi8nW.net] > 右方向から上方向に切り替わるところが回答の候補でその中から最小値を探すことで効率よく回答を見つけることができます これは間違いかも、これだと55を見つけられない 各自で考えていただければありがたく
801 名前:デフォルトの名無しさん [2022/09/10(土) 22:52:41.16 ID:7X0yi8nW.net] いや、いいのか!? ダメだ混乱してきたもうパニックですわ
802 名前:デフォルトの名無しさん mailto:sage [2022/09/10(土) 22:57:53.10 ID:sDbT/M8A.net] おちつけ