1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.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/ 宿題は宿題スレがあるのでそちらへ。 ※前スレ プログラミングのお題スレ Part17 https://mevius.5ch.net/test/read.cgi/tech/1584031367/
237 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:04:29 ID:b55CcwAR.net] JavaScript では、Lodash を使うけど、 やっぱり、Ruby の方が、メソッドチェーンできるから良い Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。 関数(オブジェクト)の形式 そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、 サイズと大きいと、ヤバイ
238 名前:デフォルトの名無しさん [2020/08/08(土) 00:46:24.94 ID:R/FWJxxqi] >>226 C++ https://wandbox.org/permlink/WHokmEEX0tp8dRgo C++で無理やりメソッドチェーンしてみた
239 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:24:36.17 ID:u/td9dv4.net] lodash破壊的変更の関数あるの地味に謎だよな 一応 lodash/fpもあるけど
240 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:26:45.92 ID:u/td9dv4.net] いや _.chainの話か 一瞬非推奨の流れ来たときから使ってないわ メソッドチェーン嫌いではないけど
241 名前:デフォルトの名無しさん [2020/08/08(土) 09:18:46 ID:b55CcwAR.net] >>226 Elixir input_str = "D a B c d c C A E c e B b" list = input_str |> String.split # 文字列を空白で分割して、配列化する |> Enum.group_by( &String.downcase/1 ) # 小文字へ変換して、グループ化する |> Map.values # 値を取り出す |> Enum.map( fn list -> Enum.join( list, " " ) end ) # 各要素を空白でつなげて、1つの文字列にする |> Enum.map( fn str -> "(" <> str <> ")" end ) # 文字列を、( ) で囲む # IO.inspect list Enum.join( list, " " ) # 各要素を空白でつなげて、1つの文字列にする |> IO.puts
242 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 14:04:33 ID:JvTsLjL+.net] >>226 Python3 https://ideone.com/6VvEbi 全然短くならなかったんだけど皆どういう脳みそしてるの
243 名前:デフォルトの名無しさん [2020/08/08(土) 14:58:00 ID:gFRxrH0y.net] >>226 perl $input = "D a B c d c C A E c e B b"; map{push @{$h{uc $_}}, $_}(split / /, $input); print map{map{"(".(join" ", @$_).")"}$h{$_}} sort{uc $a cmp uc $b} keys %h; >>238 オブ脳ならぬラムダ脳なんだろうなぁ 同値でグループ化、代表元でソート、出力、これを関数でやってる それかワンライナーへの偏執的な愛
244 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:53:05 ID:xsg1wzC9.net] >>226 Ruby gets.split.group_by(&:upcase).sort.map{|_,v|$><<"(#{v*' '}) "}
245 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:32.49 ID:yUCBpeXj.net] >>238 一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい 今どきPC上ならメモリーは潤沢にあるので ・グルーピングの処理してから ・各グループを文字列化 ・さらにその文字列を順次出力 とした方がわかりやすいと思う https://ideone.com/Tsio0O
246 名前:デフォルトの名無しさん [2020/08/08(土) 17:07:51.92 ID:HH2BebFt.net] >>238 Pythonだとどうしても短くはならないな。 https://ideone.com/iFc6eL groupbyのところは、defaultdictで書く方法もあるけど大差なし。
247 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:09:30.55 ID:JvTsLjL+.net] >>239 Rubyの人もワンライナーだな Rubyってショートコーディングに向いてるのかな? >>241 ,238 なるほど
248 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:20:24 ID:bf+w2Xl6.net] code golfなら基本はperlで、次点がRubyじゃないですかね
249 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:56:24 ID:JvTsLjL+.net] >>244 そういうものなのね
250 名前:231 mailto:sage [2020/08/08(土) 22:49:25 ID:b55CcwAR.net] 関数型・メソッドチェーンなら、Ruby・Elixir。 長く、チェーンできるから Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる str = "a b c" # 文字列を空白で分割して、配列化する IO.inspect String.split( str ) str |> String.split |> IO.inspect 出力は、どちらも ["a", "b", "c"]
251 名前:231 mailto:sage [2020/08/08(土) 22:54:29 ID:b55CcwAR.net] 基本的に、Ruby・Elixir みたいに、 メソッドチェーンで、英語のように、左から右へ読めないとダメ Python の内包表記みたいなのは、可読性が悪い
252 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 23:09:35.53 ID:n6UBlQy6.net] ざっくりとした見た目しか気にしないのでパイプライン演算子と区別がつかないrubyガイジなのであったw
253 名前:デフォルトの名無しさん [2020/08/08(土) 23:14:07.63 ID:ifN2bgU4.net] >>185 Java https://paiza.io/projects/__QcFHuBny33chXSMMTA4Q
254 名前:デフォルトの名無しさん [2020/08/08(土) 23:32:15 ID:ifN2bgU4.net] >>226 Java https://paiza.io/projects/20JVV_t6hmPUha0B9AuKOA
255 名前:デフォルトの名無しさん [2020/08/09(日) 00:15:33.89 ID:cPfQFxYQ8] Ruby上達したら便利そう 理想的なスクリプト言語だな
256 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:17:54.90 ID:/K790vfJ.net] javaでもStream使うと意外と少なくかけるんだな utilが充実してるな
257 名前:デフォルトの名無しさん [2020/08/09(日) 00:24:15.31 ID:cPfQFxYQ8] これとかすげえ https://www.youtube.com/watch?v=pgAHW8OpcTY
258 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:41:46.15 ID:uywZ9h5A.net] >>185 Python3 https://ideone.com/1aordC
259 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 02:47:46 ID:Mt0Kh35r.net] >>226 c# using System; using System.Linq; class Program { static void Main(string[] args) { var input = "D a B c d c C A E c e B b"; foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key)) { Console.Write("(" + string.Join(" ", itm) + ") "); }
260 名前: } } [] [ここ壊れてます]
261 名前:デフォルトの名無しさん [2020/08/09(日) 04:58:28 ID:bQgrv4ZF.net] >>226 Kotlin https://paiza.io/projects/zR3XGW4DaUAMXfqNq1oZ8A
262 名前:デフォルトの名無しさん [2020/08/09(日) 16:07:42 ID:HZ7sqguG.net] お題 文字列abcdeを右に2つ回転するとdeabcとなる 文字列abcdeを左に2つ回転するとcdeabとなる 2つの文字列を入力として受け取り 2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください さもなくばfalseを返してください 入力: abcde deabc 出力: true 入力: abcde cdeba 出力: false
263 名前:デフォルトの名無しさん [2020/08/09(日) 16:42:31.20 ID:/K790vfJ.net] >>257 js const isRotateStr = (a, b) => (a + a).indexOf(b) != -1 console.log(isRotateStr("abcde", "deabc")) // true console.log(isRotateStr("abcde", "cdeba")) // false
264 名前:デフォルトの名無しさん [2020/08/09(日) 16:56:20.10 ID:DzMx1xPb.net] 問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。
265 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 16:59:23.64 ID:Uo9rXbdx.net] aaとaaaを比較したらtrueになっちゃうね 文字サイズを最初にチェックすればいいかな?
266 名前:253 mailto:sage [2020/08/09(日) 19:01:45.47 ID:UiQUiAYf.net] >>226 Perl5 push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b}; print map{"(@{$h{$_}}) "} sort keys %h; 実行結果 ~ $ perl 18_221_NCS_sort_grp.pl (a A) (B B b) (c c C c) (D d) (E e)
267 名前:253 mailto:sage [2020/08/09(日) 19:17:23 ID:A1LNtpwx.net] >>257 Perl5 use feature qw{signatures say}; sub strot_cmp($a, $b) { say "入力 $a $b"; say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false'; } strot_cmp qw{abcde deabc}; strot_cmp qw{abcde cdeba}; 実行結果 ~ $ perl 18_249_strot_cmp.pl The signatures feature is experimental at 18_249_strot_cmp.pl line 2. 入力 abcde deabc 出力 true 入力 abcde cdeba 出力 false
268 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 20:09:27.60 ID:sb6ynJ/q.net] Jニキも披露してくれよ
269 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:00:05.82 ID:BOQzPYI8.net] >>226 octave https://ideone.com/qHkxnH >>257 octave https://ideone.com/oKqnrA
270 名前:253 mailto:sage [2020/08/09(日) 22:27:07 ID:iNMqPGBy.net] >>261 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正 >>257 Perl5 use feature qw{signatures say}; sub strot_cmp($a, $b) { say "入力 $a $b"; @a = "$a$a" =~ /^(.*)($b)(.*)$/; say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false'; } strot_cmp qw{abcde deabc}; strot_cmp qw{abcde cdeba}; strot_cmp qw{aaaaa aaa}; 実行結果 ~ $ perl 18_249_strot_cmp.pl The signatures feature is experimental at 18_249_strot_cmp.pl line 2. 入力 abcde deabc 出力 true 入力 abcde cdeba 出力 false 入力 aaaaa aaa 出力 false
271 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:40:05 ID:/K790vfJ.net] octave文法好みだけど結構古い言語なんだな
272 名前:253 mailto:sage [2020/08/09(日) 23:21:31.30 ID:dFp53gtH.net] >>226 Python3 s = "D a B c d c C A E c e B b".split(); d = {} for c in s: u = c.upper() if u in d: d[u] += ' ' + c else: d[u] = c ks = sorted(d.keys()) print(' '.join(map(lambda x: '(%s)' % d[x], ks))) 実行結果 ~ $ py 18_221_NCS_sort_grp.py (a A) (B B b) (c c C c) (D d) (E e)
273 名前:デフォルトの名無しさん [2020/08/09(日) 23:56:04.43 ID:DzMx1xPb.net] Perlだとこの程度でも正規表現使わないといかんのか?
274 名前:253 mailto:sage [2020/08/10(月) 00:02:07 ID:5Aj+dIHX.net] >>267 を少し簡略化 >>226 Python3 s = "D a B c d c C A E c e B b".split(); d = {} for c in s: u = c.upper() d[u] = d[u]+' '+c if u in d else c print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))
275 名前:253 mailto:sage [2020/08/10(月) 00:03:02 ID:5Aj+dIHX.net] >>268 substrとかでも書ける
276 名前:253 mailto:sage [2020/08/10(月) 01:07:06.98 ID:mTkq56mc.net] >>268 >>265 は一致する場合に対応するようあせって書いた面があり 正規表現を使うのはやりすぎ感があったのは確かなので 顕に正規表現を使わずに書きを考えてみた。 もっとも簡素な書き方として思いついたのがsplitで三分割して 前後の余った文字列を連結したらそれも一致するかなので >>257 Perl5 use feature qw{signatures say}; sub strot_cmp($a, $b) { say "入力 $a $b"; @a = split "$b", "$a$a", 3; say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false'; } strot_cmp qw{abcde deabc}; strot_cmp qw{abcde cdeba}; strot_cmp qw{aaaaa aaa}; …でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>265 と一緒なんだよね
277 名前:253 mailto:sage [2020/08/10(月) 01:18:32.03 ID:mTkq56mc.net] >>271 ゴメン、$a[2]$a[0]はbug、訂正 >>257 Perl5 use feature qw{signatures say}; sub strot_cmp($a, $b) { say "入力 $a $b"; @a = split $b, "$a$a", 3; say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false'; } strot_cmp qw{abcde deabc}; strot_cmp qw{abcde cdeba}; strot_cmp qw{aaaaa aaa};
278 名前:253 mailto:sage [2020/08/10(月) 01:58:56.02 ID:5YDTUTIu.net] >>272 ゴメン × @a = split $b, "$a$a", 3; ○ @a = split $b, "$a$a", 2;
279 名前: mailto:sage [2020/08/10(月) 02:53:12.35 ID:JYoLJZbs.net] >>257 C https://mevius.5ch.net/test/read.cgi/tech/1434079972/68
280 名前:デフォルトの名無しさん [2020/08/10(月) 05:44:26 ID:SKFyjjt9.net] お題: Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください 入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf 出力: "Hello World!"
281 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:19.32 ID:SwBLGnEH.net] >>275 Ruby require 'open-uri' str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read M = 256 i = p = s = 0 h = Hash.new(0) m = [0] * M while i < str.length case str[i] when ?+ then m[p] += 1 when ?- then m[p] -= 1 when ?[ then h[s += 1] = i when ?] then m[p].zero? ? s -= 1 : i = h[s] when ?> then p += 1 when ?< then p -= 1 when ?. then $><<m[p].chr when ?, then m[p] += $<.getc.ord end i += 1 end # => Hello World!
282 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:26.47 ID:OSJh6/O/.net] >>275 Ruby https://ideone.com/A0JIsc
283 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:10.24 ID:Z7zFlWuQ.net] >>257 Kotlin 簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。 https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ
284 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:16.38 ID:SKFyjjt9.net] >>275 C++ https://ideone.com/Lpmngq
285 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:01:14 ID:Z7zFlWuQ.net] >>275 Kotlin とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。 実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。 https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム) $ kotlinc BF2Kotlin.kt $ kotlin BF2KotlinKt < hello.bf > hello.kt $ kotlinc hello.kt $ kotlin HelloKt Hello World!
286 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:43:36.36 ID:TsKVv45J.net] >>257 Python3 https://ideone.com/DvaLMh
287 名前:デフォルトの名無しさん [2020/08/10(月) 21:10:04.86 ID:EfqLUS40.net] >>257 Python3 def f(a, b): return len(a) == len(b) and a in b + b
288 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 22:32:27 ID:tDeKMBiv.net] >>257 c https://ideone.com/BcT5su
289 名前:デフォルトの名無しさん [2020/08/10(月) 23:41:40.77 ID:SKFyjjt9.net] >>257 C++ https://ideone.com/p6Y7W4
290 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:46:58.70 ID:lJp+wmfa.net] bfってループの入れ子できたっけ?
291 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:47:11.22 ID:SwBLGnEH.net] >>285 できる
292 名前:272 mailto:sage [2020/08/11(火) 01:47:49 ID:RwCZynCZ.net] >>275 Kotlin これはインタープリタ版。 https://paiza.io/projects/J-pCgNSAEcATixwsNPmyGQ
293 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 01:50:50.24 ID:RwCZynCZ.net] >>285 知らんけど >>287 は出来るように作った。 >>280 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)
294 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 07:40:40.35 ID:RSsrE9PW.net] >>257 >>281 をリファクタリング https://ideone.com/gR6WqL
295 名前:デフォルトの名無しさん [2020/08/11(火) 14:40:27.33 ID:psN1NwFJ.net] こんなに暑いと座禅プログラムで涼みたい。
296 名前:デフォルトの名無しさん [2020/08/12(水) 10:55:20.81 ID:WiVroiaz.net] 警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり 来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。 そのマイコンのコントロールプログラムを作成。
297 名前:デフォルトの名無しさん [2020/08/12(水) 11:07:50.98 ID:WiVroiaz.net] 既にこんなの作ってる人が居た。 座禅で動いたら棒で叩かれるやつを全自動化する https://dailyportalz.jp/kiji/zazen-bou-automation
298 名前:デフォルトの名無しさん [2020/08/12(水) 16:50:07.72 ID:xjprAYba.net] 令和のコペルニクス https://youtu.be/7DbdPKWhrpY
299 名前:デフォルトの名無しさん [2020/08/12(水) 19:58:36.03 ID:j5y8ZKQl.net] お題 Brainfuckのの'+','-','.'の 3つの命令のみで 特定の文字列を表示するBrainfucの ソースコードを生成するプログラム。
300 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 20:07:13.01 ID:kGuev0jH.net] >>294 Ruby puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*'' # => ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++++++++++++++++++++++++.+++++++..+++.[略]
301 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 23:55:21 ID:WiVroiaz.net] 差分出すっていうと ADPCM の圧縮を思い出すな。
302 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:08:54.66 ID:TUx4JMNp.net] >>294 Perl5 プログラムの構造は >>295 と同じだがワンライナー。 行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。 見易くするために '.' の後には改行を出力している。 以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。 $ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0' abc +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +. +. Hello, world. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. +++++++++++++++++++++++++++++. +++++++. . +++. -------------------------------------------------------------------. ------------. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. --------. +++. ------. --------. ------------------------------------------------------. $
303 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:49:54 ID:CZu90IWX.net] >>294 Ruby "Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }
304 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 03:32:09 ID:CZu90IWX.net] >>294 Ruby "Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )
305 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 05:51:07.18 ID:CZu90IWX.net] >>294 >>298 ,299 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい
306 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 06:48:39.25 ID:9ZM4Lmsz.net] >>294 Ruby gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}
307 名前:デフォルトの名無しさん [2020/08/13(木) 12:37:03.85 ID:8zEuDtsy.net] なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか
308 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 01:20:11 ID:CuxcYYZ5.net] お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。 octave https://ideone.com/62dSzC ada95 https://ideone.com/26IGLZ
309 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:17:07 ID:cCFmHkiX.net] >>303 Ruby # 初期化だけ a = b = c = 2**31 - 1 # 初期化して表示 p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n
310 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:01:38 ID:cCFmHkiX.net] >>303 Ruby お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた # 定数 0,1 から INT32_MAX, INT32_MIN [~0].pack('l').unpack('L').first >> 1 #=> 2147483647 [~0].pack('l').unpack('N').first >> 1 #=> -2147483648 # 定数 1 から INT32_MAX, INT32_MIN [~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647 [1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648
311 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:01:01.07 ID:sgFs/qSh.net] >>303 JavaScript a=b=c=-1>>>1
312 名前:デフォルトの名無しさん [2020/08/14(金) 08:17:19.00 ID:jifd8sPx.net] >>303 C++ int32_t max = 1 << 31; int32_t min = ~max;
313 名前:デフォルトの名無しさん [2020/08/14(金) 08:18:37.41 ID:jifd8sPx.net] あ maxとminが逆だった
314 名前:デフォルトの名無しさん [2020/08/14(金) 08:20:39.60 ID:jifd8sPx.net] しかもお題と関係ない スマソ
315 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:21:04.21 ID:hpI++Bi7.net] >>303 Python では整数に制限がないからnumpyで、 import numpy as np a=b=c=np.iinfo(np.int32).max
316 名前:デフォルトの名無しさん [2020/08/14(金) 08:38:19 ID:jifd8sPx.net] >>303 C++(訂正) #include <iostream> #include <tuple> int main() { int32_t max = ~(1 << 31); const auto [a, b, c] = [&]() { return std::tie(max, max, max); }(); std::cout << a << std::endl; std::cout << b << std::endl; std::cout << c << std::endl; }
317 名前:デフォルトの名無しさん [2020/08/14(金) 09:05:58 ID:jifd8sPx.net] const auto [a, b, c] = std::tie(max, max, max); これだけでよかったorz
318 名前:デフォルトの名無しさん [2020/08/14(金) 14:02:54 ID:9qHjnK+i.net] お題:任意文字列を含むビットコインアドレスを生成するスクリプト BitCoinDescriptionAddress ↓ 1BitCoinDescriptionAddressadTvGDH
319 名前:デフォルトの名無しさん [2020/08/15(土) 16:58:24 ID:gFfdk9Ij.net] >>303 Kotlin 及び Kotlin script 普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。 val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE) この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、 b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN() のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入 だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。 それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか 代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への 代入ができるようになる。 fun <T> List<T>.component6() = get(5) val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3) これで f には 3 が代入される。 まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど 見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。
320 名前:295 mailto:sage [2020/08/15(土) 17:28:56 ID:nnj+MvqH.net] >>303 octave https://ideone.com/FgfsWd 単に[a, b, c] = deal(intmax)でよかった
321 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 17:57:15 ID:uqmyrozg.net] お題 長さNの順列を全列挙してください 入力: N 出力: N!行の1からNの整数を用いた順列 例 入力: 3 出力: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
322 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:04:12.38 ID:WnA8LB9O.net] >>316 Ruby [*1..gets.to_i].permutation{|a| puts a*' '}
323 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:07:06.59 ID:nnj+MvqH.net] >>316 octave https://ideone.com/dC1LGs f = @(n) perms(1:n); f(3)
324 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 19:24:16.43 ID:4GsEJ4Sf.net] お題 HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。 内容は、html、head、meta、title、body、h1 を含み、 UTF-8で表示するものとする、 Hello World!
325 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:07:59.51 ID:nR02Shr3.net] お題: 整数の0,1を真偽値のfalse,trueに変換しなさい
326 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:22:45.39 ID:BUqVCKAW.net] >>319 Ruby require 'webrick' BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe' srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} ) trap("INT"){ srv.shutdown } srv.mount_proc('/') do |req, res| html = <<_EOT_ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Title</title></head> <body> <h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html> _EOT_ res.body = html.encode( Encoding::UTF_8 ) res['Content-Type'] = 'text/html' end Thread.new { sleep 1; system( %Q{"#{BrowserPath}" 127.0.0.1:55080/} ) } srv.start
327 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:34:31.85 ID:BUqVCKAW.net] >>320 Ruby def i2b( x ) if x.is_a?( Integer ) return false if x == 0 return true if x == 1 end x end [ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x| puts "%5p : %5p" % [x, i2b( x )] } # => "foo" : "foo" 7 : 7 1 : true 1.0 : 1.0 [] : [] true : true false : false 0 : false 0 : false {} : {}
328 名前:314 mailto:sage [2020/08/15(土) 20:37:12.09 ID:BUqVCKAW.net] >>322 0 : false が一行余分に付いてしまった
329 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:49:55 ID:WnA8LB9O.net] >>320 Ruby n.nonzero?
330 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:59:34.51 ID:nnj+MvqH.net] >>320 ocaml https://ideone.com/nSKbMo let f = function 0 -> false | 1 -> true let () = Printf.printf "%B %B" (f 0) (f 1) >>320 c++ https://ideone.com/Dm4QrP #include <iostream> #include <iomanip> int main() {
331 名前:std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl; return 0; } [] [ここ壊れてます]
332 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 21:22:21.80 ID:v9cGseLQ.net] >>320 0, 1以外の時の挙動が書いてない 単体テストできねーだろ、やり直し!
333 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 23:19:07 ID:gFfdk9Ij.net] >>320 Kotlin 及び Kotlin Script まず、こういう拡張関数を定義しておく。 fun Int.toBoolean() = this != 0 この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。 例 0.toBoolean() は false になる。 1.toBoolean() は true になる。 x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。
334 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 02:10:15.75 ID:aQEvXwVj.net] >>316 C https://ideone.com/1EStFG
335 名前:デフォルトの名無しさん [2020/08/16(日) 10:54:19.77 ID:DGzsHTxH.net] Python >>320 bool(n) >>316 from itertools import permutations N = 3 print([x for x in permutations(range(1, N+1))])
336 名前:デフォルトの名無しさん [2020/08/16(日) 11:17:36 ID:x8ZjthFZ.net] >>316 C++ https://ideone.com/vnmcwl
337 名前:デフォルトの名無しさん [2020/08/16(日) 19:28:34.07 ID:Stgr85a5.net] >>316 Kotlin https://paiza.io/projects/m-rh9LUdWqgBDV_7xXtTdA なんとなく以前作ったような気もするがまた作った。