[過去ログ]
プログラミングのお題スレ Part13 (1002レス)
プログラミングのお題スレ Part13 http://mevius.5ch.net/test/read.cgi/tech/1549160513/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
653: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/13(水) 23:29:50.59 ID:KwyST1w4 お題: ピリオド区切りの二つのバージョン番号を比較し、大小関係を判定した結果を-1, 0, 1のいずれとして返せ。 0.1.2 > 0.0: 1 1.2.3 < 1.3: -1 0.0.0 == 0.0: 0 http://mevius.5ch.net/test/read.cgi/tech/1549160513/653
654: デフォルトの名無しさん [] 2019/03/14(木) 00:08:08.19 ID:TPG8S2ma >>653 手抜きHaskell main = mapM_ pc $ [("0.1.2", "0.0"), ("1.2.3", "1.3"), ("0.0.0", "0.0")] where pc = print.uncurry mycompare mycompare "0.0.0" "0.0" = 0 mycompare "0.0" "0.0.0" = 0 mycompare xs ys |xs `compare` ys == EQ = 0 |xs `compare` ys == GT = 1 |xs `compare` ys == LT = -1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/654
655: デフォルトの名無しさん [sage] 2019/03/14(木) 01:08:57.36 ID:vRIsxo2e >>601 Perl5 $s = '>>>>>vvvvv<<<<^^^^'; ($i, $y) = (0, 0); for (split'',$s) { $i++ if />/; $i-- if /</; $j++ if /v/; $j-- if /\^/; push @t, [$i, $j, $_]; } use List::Util qw{min max}; ($i, $j) = (min(map{$$_[0]} @t), min(map{$$_[1]} @t)); $$_[0] -= $i, $$_[1] -= $j for @t; ($i, $j) = (max(map{$$_[0]} @t), max(map{$$_[1]} @t)); push @m, [('*')x($i + 1)] for 0..$j; $m[$$_[1]][$$_[0]] = $$_[2] for @t; use feature say; say @$_ for @m; 実行結果 ~ $ perl 13_601.pl >>>>> ^***v ^***v ^***v ^***v <<<<v http://mevius.5ch.net/test/read.cgi/tech/1549160513/655
656: デフォルトの名無しさん [sage] 2019/03/14(木) 01:16:23.50 ID:vRIsxo2e >>638 Perl5 $r = qr/[^][=]/; while (<DATA>) { chomp; $s = $1 if /\[($r+)\]/; print "$s:$1:$2\n" if /($r+)=($r+)/; } __DATA__ [sec1] key1=val1 [sec2] key2=val2 実行結果 ~ $ perl 13_638.pl sec1:key1:val1 sec2:key2:val2 http://mevius.5ch.net/test/read.cgi/tech/1549160513/656
657: デフォルトの名無しさん [sage] 2019/03/14(木) 06:43:00.64 ID:3EvgP48J >>653 0.0.1 > 0.0 でいいのか? http://mevius.5ch.net/test/read.cgi/tech/1549160513/657
658: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 07:26:20.10 ID:1+g2CCuw >>657 ない桁はゼロと見なす。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/658
659: デフォルトの名無しさん [sage] 2019/03/14(木) 10:42:18.54 ID:YiVNNcx0 >>653 javascript const vComp = (a, b) => { const [semA, semB] = [a, b].map(v => { const {major, minor = 0, patch = 0} = /(?<major>\d+)(\.(?<minor>\d+)(\.(?<patch>\d+))?)?/.exec(v).groups; return {major, minor, patch}; }); const majorComp = semA.major - semB.major; if (majorComp) return Math.sign(majorComp); const minorComp = semA.minor - semB.minor; if (minorComp) return Math.sign(minorComp); const patchComp = semA.patch - semB.patch; return Math.sign(patchComp); }; console.log(vComp('0.1.2', '0.0')); console.log(vComp('1.2.3', '1.3')); console.log(vComp('0.0.0', '0.0')); 結果: 1 -1 0 (おまけ)ソート: console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp)); 結果: ["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"] http://mevius.5ch.net/test/read.cgi/tech/1549160513/659
660: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 10:59:38.01 ID:PwP2txgq >>653 大小関係の定義をまじめに考えましょう。 >>659 JavaScriptならsplit使えるはず。桁数の制限は要らない。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/660
661: デフォルトの名無しさん [sage] 2019/03/14(木) 11:23:19.67 ID:YiVNNcx0 ごめん勝手にsemverかと思い込んでた http://mevius.5ch.net/test/read.cgi/tech/1549160513/661
662: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 11:35:04.68 ID:1+g2CCuw LaTeXのバージョンシステムはちょっと特殊で、円周率に近付くようになってる。この場合は文字列として比較しないといけない。 一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。 まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/662
663: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 11:47:43.06 ID:1+g2CCuw 一番確実なバージョン大小判定方法は、リリースごとに年月日とバージョン情報を記録しておくことだ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/663
664: デフォルトの名無しさん [] 2019/03/14(木) 13:52:35.97 ID:uKED8jms >>653 Perl https://paiza.io/projects/puAYVRuDktPCBh_Xdd2vbQ http://mevius.5ch.net/test/read.cgi/tech/1549160513/664
665: デフォルトの名無しさん [] 2019/03/14(木) 15:56:35.04 ID:TPG8S2ma >>547 Haskell 内包表記の方が何をやってるか分かり易いと気付いて書き換えた。 import Data.Char main = (mapM_ print.filename) ["aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt"] filename [] = [] filename (xs:xss)| length a > 1 = a:filename b where a = func (==) b = func (/=) func f = [xs' | xs' <- (xs:xss), map toLower xs `f` map toLower xs'] filename (_:xss) = filename xss http://mevius.5ch.net/test/read.cgi/tech/1549160513/665
666: デフォルトの名無しさん [sage] 2019/03/14(木) 18:00:35.68 ID:38t26SL0 お題: 何も出力しないプログラム自身のコードをソートするとhello worldを出力するプログラムを作れ http://mevius.5ch.net/test/read.cgi/tech/1549160513/666
667: デフォルトの名無しさん [sage] 2019/03/14(木) 18:07:12.84 ID:YPV07ntD >>653 # Python def cmp(v0,v1): if v0==v1: return 0 else: return 1 if (v0 > v1) else -1 print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') , cmp('1.1', '1.1') , cmp('1.2.3','1.3') ) # 1 1 0 -1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/667
668: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 18:11:49.83 ID:1+g2CCuw >>667 バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/668
669: デフォルトの名無しさん [sage] 2019/03/14(木) 18:14:06.49 ID:YPV07ntD >>667 print( cmp('1.1.0', '1.1') ) # 1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/669
670: デフォルトの名無しさん [sage] 2019/03/14(木) 18:32:38.72 ID:YPV07ntD >>667 訂正 Python def cmp(v0,v1): v0 = list( map(int , v0.split('.') ) ) v1 = list( map(int , v1.split('.') ) ) if v0==v1: return 0 else: return 1 if (v0 > v1) else -1 print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') , cmp('1.1.0', '1.1') , cmp('10.0','9.1') , cmp('1.1', '1.1') , cmp('1.2.3','1.3') , cmp('1.1', '1.1.0') , ) # 1 1 1 1 0 -1 -1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/670
671: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 18:44:00.25 ID:1+g2CCuw >>670 残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/671
672: デフォルトの名無しさん [sage] 2019/03/14(木) 18:50:17.55 ID:dvZ8z+Z0 >>653 octave https://ideone.com/xh4Cj4 http://mevius.5ch.net/test/read.cgi/tech/1549160513/672
673: デフォルトの名無しさん [sage] 2019/03/14(木) 18:58:38.18 ID:dvZ8z+Z0 お題:フィボナッチ数列を最初の10個表示せよ ruby https://ideone.com/ewyP50 perl6 https://ideone.com/O3tVZj http://mevius.5ch.net/test/read.cgi/tech/1549160513/673
674: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 18:59:00.09 ID:1+g2CCuw ソフトウェア開発におけるバージョン管理は、製造メーカーにおける型番管理と同じくらい重要である。 検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。 インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/674
675: デフォルトの名無しさん [sage] 2019/03/14(木) 18:59:16.90 ID:38t26SL0 お題: 3つの数の最小値を1回の分岐で決めろ! http://mevius.5ch.net/test/read.cgi/tech/1549160513/675
676: デフォルトの名無しさん [sage] 2019/03/14(木) 19:55:29.27 ID:YiVNNcx0 >>660 javascript const vComp = (a, b) => { const verA = a.split`.`; const verB = b.split`.`; const shorter = verA.length - verB.length < 0 ? verA : verB; const cmps = shorter.map((v, i) => Math.sign(verA[i] - verB[i])); return cmps.reduce((acc, v, i) => Math.sign(acc + v * 2 ** (shorter.length - i)), 0); }; console.log(vComp('0.1.2', '0.0')); console.log(vComp('1.2.3', '1.3')); console.log(vComp('0.0.0', '0.0')); 結果: 1 -1 0 (おまけ)ソート: console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp)); 結果: ["0.0", "0.0.0", "0.0", "0.1.2", "1.2.3", "1.3"] http://mevius.5ch.net/test/read.cgi/tech/1549160513/676
677: デフォルトの名無しさん [sage] 2019/03/14(木) 19:59:51.70 ID:YiVNNcx0 あっ間違えた 家帰ってから直す http://mevius.5ch.net/test/read.cgi/tech/1549160513/677
678: デフォルトの名無しさん [sage] 2019/03/14(木) 20:14:25.92 ID:vvVzV1YI >>671 どこにそんな決まりがあるの? 普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。 総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/678
679: デフォルトの名無しさん [sage] 2019/03/14(木) 20:14:59.41 ID:ko69m/9G 見つけた RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org https://metacpan.org/pod/RPM::VersionSort http://mevius.5ch.net/test/read.cgi/tech/1549160513/679
680: デフォルトの名無しさん [sage] 2019/03/14(木) 20:16:24.45 ID:vvVzV1YI とにかくバージョン番号が異なれば別のバージョンとみなすのが普通だろ。 同じと思う方がおかしい。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/680
681: デフォルトの名無しさん [sage] 2019/03/14(木) 20:16:49.16 ID:0tbf1s3D お題:“木”という漢字を使って以下のようなフラクタル図形を描け n=0 木 n=1 -木 木木 n=2 ---木 --木木 -木--木 木木木木 n=3 -------木 ------木木 -----木--木 ----木木木木 ---木------木 --木木----木木 -木--木--木--木 木木木木木木木木 ※ハイフンはスペースだと思ってください http://mevius.5ch.net/test/read.cgi/tech/1549160513/681
682: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/14(木) 20:26:23.57 ID:1+g2CCuw >>678 Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/682
683: デフォルトの名無しさん [sage] 2019/03/14(木) 20:45:22.76 ID:vvVzV1YI >>682 そんなローカルールなんて知るかよ。 もしそういう意図なら問題を訂正しろよ。 いちいち誰かのいちゃもんに付き合ってる暇はない。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/683
684: デフォルトの名無しさん [sage] 2019/03/14(木) 20:52:19.11 ID:YiVNNcx0 >>660 の修正 const vComp = (a, b) => { let verA = a.split `.`; let verB = b.split `.`; const len = Math.max(verA.length, verB.length); verA = [...verA, ...'0'.repeat(len - verA.length)]; verB = [...verB, ...'0'.repeat(len - verB.length)]; const cmps = verA.map((v, i) => Math.sign(verA[i] - verB[i])); return Math.sign(cmps.reduce((acc, v, i) => acc + v * 2 ** (len - i)), 0); }; console.log(vComp('0.1.2', '0.0')); console.log(vComp('1.2.3', '1.3')); console.log(vComp('0.0.0', '0.0')); console.log(['0.1.2', '0.0', '1.2.3', '1.3', '0.0.0', '0.0'].sort(vComp)); //いいかげん結果省略 http://mevius.5ch.net/test/read.cgi/tech/1549160513/684
685: デフォルトの名無しさん [sage] 2019/03/14(木) 22:10:39.99 ID:8oAE3RnG >>683 例に0.0.0と0.0が等しいって書いてあるんだが http://mevius.5ch.net/test/read.cgi/tech/1549160513/685
686: デフォルトの名無しさん [sage] 2019/03/14(木) 23:16:14.88 ID:3EvgP48J >>683 > いちいち誰かのいちゃもんに付き合ってる暇はない。 ならスルーしろよ お前の頓珍漢な解釈なんて要らんし http://mevius.5ch.net/test/read.cgi/tech/1549160513/686
687: デフォルトの名無しさん [sage] 2019/03/14(木) 23:41:35.78 ID:nI5lwjDU >>653 Squeak Smalltalk | fn | fn := [:strs | (strs collect: [:str | (str subStrings: '.') polynomialEval: 1/1e4]) reduce: #<=>]. fn value: #('0.1.2' '0.0'). "=> 1 " fn value: #('1.2.3' '1.3'). "=> -1 " fn value: #('0.0.0' '0.0'). "=> 0 " http://mevius.5ch.net/test/read.cgi/tech/1549160513/687
688: デフォルトの名無しさん [sage] 2019/03/15(金) 00:00:24.31 ID:27sSd34q >>653 Perl5 use feature current_sub; @is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']); for (@is) { ($l, $r) = @$_; @l = split'\.', $l; @r = split'\.', $r; $z = sub { my $a = shift @l; my $b = shift @r; if (defined $a or defined $b) { $a //= 0; $b //= 0; $a <=> $b or __SUB__->() } else { 0 } }->(); %d = (-1 => ' <', 0 => '==', 1 => '> '); print "$l $d{$z} $r : $z\n"; } 実行結果 ~ $ perl 13_653.pl 0.1.2 > 0.0 : 1 1.2.3 < 1.3 : -1 0.0.0 == 0.0 : 0 http://mevius.5ch.net/test/read.cgi/tech/1549160513/688
689: デフォルトの名無しさん [sage] 2019/03/15(金) 00:10:49.43 ID:27sSd34q >>673 Perl5 @f = (0, 1); push @f, $f[-2] + $f[-1] while @f < 10; print "@f\n"; 実行結果 ~ $ perl 13_673_fib10.pl 0 1 1 2 3 5 8 13 21 34 Prel6、いいな… http://mevius.5ch.net/test/read.cgi/tech/1549160513/689
690: ◆QZaw55cn4c [sage] 2019/03/15(金) 00:29:52.08 ID:LCz/5Veu >>675 >1回の分岐で決めろ! https://ideone.com/15k0PN は題意を満たしていますか? http://mevius.5ch.net/test/read.cgi/tech/1549160513/690
691: デフォルトの名無しさん [sage] 2019/03/15(金) 00:45:04.99 ID:GUP5tEyB 2回分岐してるように見えるが http://mevius.5ch.net/test/read.cgi/tech/1549160513/691
692: デフォルトの名無しさん [] 2019/03/15(金) 00:50:01.20 ID:ltf0XXfV >>666 I 行単位で昇順にソートする場合 exit "hello world" println 文字単位のソートの場合は難しそう。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/692
693: デフォルトの名無しさん [sage] 2019/03/15(金) 00:52:36.60 ID:J+j6Qj2a >>675 Java https://ideone.com/dAlKtw 0回じゃお題満たしてないからだめです? http://mevius.5ch.net/test/read.cgi/tech/1549160513/693
694: デフォルトの名無しさん [sage] 2019/03/15(金) 01:15:34.20 ID:T0clmjRI >>673 Squeak Smalltalk | fibGen | fibGen := [:a :b | Generator on: [:g | [g yield: a. b := a + b. a := b - a] repeat]]. (fibGen value: 0 value: 1) next: 10. "=> an OrderedCollection(0 1 1 2 3 5 8 13 21 34) " http://mevius.5ch.net/test/read.cgi/tech/1549160513/694
695: デフォルトの名無しさん [sage] 2019/03/15(金) 01:34:55.02 ID:4EriVrie >>681 Squeak Smalltalk | sp fn | sp := $-. "sp := Character space." fn := [:n | | tree | tree := [:lines :count | (lines collectWithIndex: [:line :idx | line, (String new: idx - 1 * 2 withAll: sp), line ]), lines ]. (((1 to: n) inject: #('木') into: tree) collectWithIndex: [:line :idx | (String new: idx - 1 withAll: sp), line ]) reversed asStringWithCr ]. fn value: 0. "=> '木' " fn value: 1. "=> '-木 木木' " fn value: 2. "=> '---木 --木木 -木--木 木木木木' " http://mevius.5ch.net/test/read.cgi/tech/1549160513/695
696: デフォルトの名無しさん [sage] 2019/03/15(金) 01:51:53.98 ID:Fj/79Ht+ >>673 javascript const take = n => function*(iterable) { const iterator = iterable[Symbol.iterator](); for (let i = 0; i < n; i++) { const {value, done} = iterator.next(); if (done) break; yield value; } }; const fibo = function*() { const memo = [0n, 1n]; const fib = n => n in memo ? memo[n] : memo[n] = fib(n - 2) + fib(n - 1); for(let i = 0; ; i++) yield fib(i); }(); console.log([...take(10)(fibo)]); 結果: [0n, 1n, 1n, 2n, 3n, 5n, 8n, 13n, 21n, 34n] http://mevius.5ch.net/test/read.cgi/tech/1549160513/696
697: デフォルトの名無しさん [] 2019/03/15(金) 08:40:18.32 ID:VdqhZ9XO >>673 Common Lisp https://ideone.com/fbbBbx http://mevius.5ch.net/test/read.cgi/tech/1549160513/697
698: デフォルトの名無しさん [sage] 2019/03/15(金) 10:29:40.47 ID:4uXCwYPV >>696 よく考えたら配列で出力する必要もなかった console.log(...take(10)(fibo)); 結果: 0 1 1 2 3 5 8 13 21 34 http://mevius.5ch.net/test/read.cgi/tech/1549160513/698
699: デフォルトの名無しさん [] 2019/03/15(金) 10:50:31.62 ID:ltf0XXfV >>666 Lua a=ture a=a or print("hello world") http://mevius.5ch.net/test/read.cgi/tech/1549160513/699
700: デフォルトの名無しさん [] 2019/03/15(金) 10:54:07.06 ID:EVqxIhVf >>673 Haskell main = (print.take 10) fibs where fibs = 0:1:zipWith (+) fibs (tail fibs) http://mevius.5ch.net/test/read.cgi/tech/1549160513/700
701: デフォルトの名無しさん [sage] 2019/03/15(金) 11:30:37.72 ID:gesJPCRi >>670 訂正 Python def ver (v): s = list( map(int , v.split('.') ) ) for _ in s: if s[-1] == 0 :s.pop(-1) return s def cmp(v0,v1): v0 = ver(v0) v1 = ver(v1) if v0==v1: return 0 else: return 1 if (v0 > v1) else -1 print(cmp('1.2.3','1.2') , cmp('1.2.3','1.1.1') , cmp('10.0','9.1') , cmp('1.1', '1.1') , cmp('1.2.0.0','1.2.0') , cmp('1.2.3','1.3') ) # 1 1 1 0 0 -1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/701
702: デフォルトの名無しさん [] 2019/03/15(金) 12:06:15.98 ID:phFelL6J >>666 「ソートすると」ではなく「ソートしてからその出力を実行またはコンパイルして実行すると」なのでは? http://mevius.5ch.net/test/read.cgi/tech/1549160513/702
703: デフォルトの名無しさん [sage] 2019/03/15(金) 13:00:31.13 ID:1zMWa3GW >>702 せやで http://mevius.5ch.net/test/read.cgi/tech/1549160513/703
704: デフォルトの名無しさん [sage] 2019/03/15(金) 13:38:24.99 ID:CRw2aIHX そーっとしておこう http://mevius.5ch.net/test/read.cgi/tech/1549160513/704
705: デフォルトの名無しさん [sage] 2019/03/15(金) 15:16:52.97 ID:1zMWa3GW お題: プログラムのコードの文字を縦読みしたコードが実行可能なコード http://mevius.5ch.net/test/read.cgi/tech/1549160513/705
706: デフォルトの名無しさん [sage] 2019/03/15(金) 17:37:30.24 ID:g4S7Lu9n お題 2桁16進数化したものをつなげた形でIPアドレスが与えられる。(例:192.168.0.1 -> C0A80001) 与えられたIPアドレスからホスト名を逆引きせよ。 例 08080808 -> google-public-dns-a.google.com 9da6e21a -> www.cnn.com http://mevius.5ch.net/test/read.cgi/tech/1549160513/706
707: デフォルトの名無しさん [] 2019/03/15(金) 18:51:48.50 ID:phFelL6J >>706 Perl5 https://paiza.io/projects/pgmsypvAWHlJ0UwFis4OFg?language=perl http://mevius.5ch.net/test/read.cgi/tech/1549160513/707
708: 673 [sage] 2019/03/15(金) 19:08:00.81 ID:3zDqFokC >>673 java https://ideone.com/vNVR4y >>673 c https://ideone.com/P6eqTd http://mevius.5ch.net/test/read.cgi/tech/1549160513/708
709: デフォルトの名無しさん [sage] 2019/03/15(金) 19:13:09.78 ID:4uXCwYPV >>706 node const reverse = hexIP => require('dns').reverse(hexIP .split(/^(..)(..)(..)(..)$/g) .map(xx => parseInt(xx, 16) || '') .join('.').replace(/^\.|\.$/g, ''), (err, hostnames) => { console.log(hostnames); }); console.log(reverse('08080808')); //=> [ 'google-public-dns-a.google.com' ] console.log(reverse('9da6e21a')); //=> [ 'www.cnn.com' ] http://mevius.5ch.net/test/read.cgi/tech/1549160513/709
710: デフォルトの名無しさん [sage] 2019/03/16(土) 01:04:28.66 ID:moiau3OK >>688 もっと簡潔に書けるんだった… >>653 Perl5 use feature current_sub; @is = (['0.1.2', '0.0'], ['1.2.3', '1.3'], ['0.0.0', '0.0']); for (@is) { ($l, $r) = @$_; @l = split'\.', $l; @r = split'\.', $r; $z = sub { my $a = shift @l; my $b = shift @r; (defined $a or defined $b) ? ($a <=> $b or __SUB__->()) : 0 }->(); %d = qw{-1 < 0 == 1 >}; print "$l $d{$z} $r : $z\n"; } 実行結果 ~ $ perl 13_653.pl 0.1.2 > 0.0 : 1 1.2.3 < 1.3 : -1 0.0.0 == 0.0 : 0 http://mevius.5ch.net/test/read.cgi/tech/1549160513/710
711: デフォルトの名無しさん [] 2019/03/16(土) 02:33:36.77 ID:ksQagb59 >>653 Kotlin https://paiza.io/projects/Uidg2dU-H0l3liAmw1scwQ http://mevius.5ch.net/test/read.cgi/tech/1549160513/711
712: デフォルトの名無しさん [] 2019/03/16(土) 06:51:03.68 ID:x9tnPyz1 >>666 Haskell 空文字は出力しないと動かないから許して。(動く場合はmain =でパターンマッチして出力文埋め込むだけだけど) ソートした自身の書き込み先、実行先は自身じゃ無いといけないとは書いてない。 import System.Process main = putStr "" >> readFile "runmyself.hs" >>= \f -> writeFile "runmyself2.hs" ((replace.unlines.qsort.lines) f) >> callCommand "runghc runmyself2.hs" replace [] = [] replace (p:u:t:s:t2:r:x:y:z:xs) | (p:u:t:s:t2:r:x:y:z:[]) == "putStr \"\"" = "putStrLn \"Hello World\"" ++ replace xs replace (a1:a2:a3:a4:a5:a6:a7:a8:a9:a10:a11:a12:a13:a14:a15:a16:a17:a18:a19:a20:a21:a22:a23:a24:a25:a26:a27:a28:a29:a30:a31:a32:a33:a34:a35:a36:a37:xs) | (a1:a2:a3:a4:a5:a6:a7:a8:a9:a10:a11:a12:a13:a14:a15:a16:a17:a18:a19:a20:a21:a22:a23:a24:a25:a26:a27:a28:a29:a30:a31:a32:a33:a34:a35:a36:a37:[]) == ">> callCommand \"runghc runmyself2.hs\"" = "" ++ replace xs replace (x:xs) = x:replace xs qsort [] = [] qsort (x:xs) = qsort [s| s <- xs, s <= x] ++ [x] ++ qsort [l| l <- xs, l > x] http://mevius.5ch.net/test/read.cgi/tech/1549160513/712
713: デフォルトの名無しさん [sage] 2019/03/16(土) 14:50:17.74 ID:0dLFyPZP >>681 Perl5 use feature say; $n = 0; @t = ('木'); say "n=$n\n$t[0]"; for $n (1..2) { $l = '-' x 2**($n-1); @u = map{$l . $_ . $l} @t; @w = map{$t[$_].$t[$_]} 0..$#t; @t = (@u, @w); say "n=$n"; say for @t; } 実行例 ~ $ perl 13_681.pl n=0 木 n=1 -木- 木木 n=2 ---木--- --木木-- -木--木- 木木木木 注) 正直者には、-はスペースに見えます。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/713
714: デフォルトの名無しさん [sage] 2019/03/16(土) 16:51:50.43 ID:EVMD7h0V お題: プログラム言語をなにも知らない人にもプログラムの意味が理解できるコメント無しのhello worldを出力するコプログラム http://mevius.5ch.net/test/read.cgi/tech/1549160513/714
715: デフォルトの名無しさん [sage] 2019/03/16(土) 17:11:38.87 ID:0dLFyPZP わかりません>< http://mevius.5ch.net/test/read.cgi/tech/1549160513/715
716: デフォルトの名無しさん [sage] 2019/03/16(土) 17:16:48.87 ID:EVMD7h0V お題: 文字列に丁度いい具合にグリッチを入れて超かっこいい文字列を作るプログラム http://mevius.5ch.net/test/read.cgi/tech/1549160513/716
717: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/16(土) 17:18:04.51 ID:PQISp+Pa グリッチは広辞苑には載っていません。説明して下さい。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/717
718: デフォルトの名無しさん [sage] 2019/03/16(土) 17:21:14.90 ID:EVMD7h0V >>717 いやです http://mevius.5ch.net/test/read.cgi/tech/1549160513/718
719: デフォルトの名無しさん [sage] 2019/03/16(土) 17:36:13.64 ID:0dLFyPZP >>716 perl5 http://perl-users.jp/articles/advent-calendar/2011/acme/6 http://mevius.5ch.net/test/read.cgi/tech/1549160513/719
720: デフォルトの名無しさん [sage] 2019/03/16(土) 20:05:38.53 ID:INaBYg0f グリッチってアレでしょ? あの、整いました!ってやつ。 最近みないな。 https://glitch.com http://mevius.5ch.net/test/read.cgi/tech/1549160513/720
721: 707 [] 2019/03/17(日) 01:26:35.49 ID:5dC2feuc >>706 Kotlin https://paiza.io/projects/PHrLKrBMqZYA6AC9bUWDcg 何故か 9da6e21a の方はホスト名になってくれず IP アドレスの文字列になる。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/721
722: 707 [] 2019/03/17(日) 02:33:00.06 ID:5dC2feuc >>706 C https://paiza.io/projects/ZW4sJq_ea_wQQxe_vOlGjQ gethostbyname() や gethostbyaddr() ではなく getnameinfo() 使ってみました。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/722
723: デフォルトの名無しさん [] 2019/03/17(日) 06:18:59.33 ID:k04EM+xl 2桁までの足し算の筆算を表示せよ。 例: 29 +15 ---- 14 3 ---- 44 29 + 5 ---- 14 2 ---- 34 http://mevius.5ch.net/test/read.cgi/tech/1549160513/723
724: デフォルトの名無しさん [] 2019/03/17(日) 06:20:05.97 ID:5dC2feuc >>681 Kotlin https://paiza.io/projects/wzAUkDgm-BUe9ENI4NFDYw http://mevius.5ch.net/test/read.cgi/tech/1549160513/724
725: デフォルトの名無しさん [] 2019/03/17(日) 07:23:54.75 ID:1ggb6IGK お題 実数a,b (0<a<b)が与えられたとき、平面座標(a,b),(0,0),(a,-b)の3点を通る円の半径を求める。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/725
726: デフォルトの名無しさん [sage] 2019/03/17(日) 07:27:24.80 ID:vfP8HMqf 余弦定理と正弦定理1回ずつ使うだけだな http://mevius.5ch.net/test/read.cgi/tech/1549160513/726
727: デフォルトの名無しさん [sage] 2019/03/17(日) 07:31:01.10 ID:OwOB9RAr 数学で解けてもコードに落とせない人っているよね http://mevius.5ch.net/test/read.cgi/tech/1549160513/727
728: デフォルトの名無しさん [] 2019/03/17(日) 08:41:45.83 ID:k04EM+xl >>727 居るけど、そういう人って機械自体が苦手な人。 機械と数学に強くてコードに落とせない人には会ったことがない。 機械には強いけど数学苦手だからコードに落とせないって人は(自分含め)沢山いるが。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/728
729: デフォルトの名無しさん [sage] 2019/03/17(日) 12:19:22.82 ID:gm8A83sV 自転車修理屋さんが機械に強いけどコードなんて、かけなさそう http://mevius.5ch.net/test/read.cgi/tech/1549160513/729
730: デフォルトの名無しさん [sage] 2019/03/17(日) 12:38:59.54 ID:TUY5K+QC >>723 Perl5 for (<DATA>) { ($l, $o, $r) = split; @l = $l =~ /(\d?)(\d)/; @r = $r =~ /(\d?)(\d)/; $a1 = $l[0] + $r[0]; $a0 = $l[1] + $r[1]; @a1 = $a1 =~ /(\d?)(\d)/; @a0 = $a0 =~ /(\d?)(\d)/; $a = 10*$a1 + $a0; $" = ''; print <<"EOF"; @l $o@r --- @a1 @a0 --- $a EOF } __DATA__ 29 + 15 29 + 5 http://mevius.5ch.net/test/read.cgi/tech/1549160513/730
731: デフォルトの名無しさん [sage] 2019/03/17(日) 12:40:50.32 ID:TUY5K+QC >>730 の実行結果 ~ $ perl 13_723.pl 29 +15 --- 3 14 --- 44 29 +5 --- 2 14 --- 34 せっかくのスペース調整が詰まっちゃって残念なのでアンカーでポップアップして見てね >>731 http://mevius.5ch.net/test/read.cgi/tech/1549160513/731
732: デフォルトの名無しさん [sage] 2019/03/17(日) 12:41:06.87 ID:PfKDQB+U >>725 C++ https://ideone.com/Mvx9Mp http://mevius.5ch.net/test/read.cgi/tech/1549160513/732
733: デフォルトの名無しさん [] 2019/03/17(日) 13:19:09.72 ID:k04EM+xl >>723 掛け算に対応したり、1桁どうしの計算用フォーマット作ったりしてたら規模がでかくなった(・ω・`) 1 * 2 ----- 2 10 * 0 ----- 0 Haskell https://ideone.com/SCzGKq http://mevius.5ch.net/test/read.cgi/tech/1549160513/733
734: デフォルトの名無しさん [] 2019/03/17(日) 13:39:28.89 ID:yIqzgq0g >>681 Common Lisp https://ideone.com/Mutq4v http://mevius.5ch.net/test/read.cgi/tech/1549160513/734
735: デフォルトの名無しさん [sage] 2019/03/17(日) 18:42:43.38 ID:7j/Zhhp5 >>723 ネタ回答: WolframAlpha API / node // index.js const {get} = require('http'); const appid = '<<YOUR WolframAlpha APP ID>>'; process.stdin.on('data', data => { get(`http://api.wolframalpha.com/v2/query?appid=${appid}&input=${encodeURIComponent(data.toString().trim())}&podstate=Result__Step-by-step+solution&format=image&output=json`, res => { res.setEncoding('utf8'); let body = ''; res.on('data', chunk => {body += chunk;}); res.on('end', () => { get(JSON.parse(body).queryresult.pods.filter(({title}) => title === 'Results')[0].subpods.filter(({title}) => title === 'Possible intermediate steps')[0].img.src, res => { res.on('data', data => {process.stdout.write(data)}); }); }); }); }); $ echo 29+15 | node . > ./test1.gif https://i.imgur.com/QxolfNz.gif $ echo 29+5 | node . > ./test2.gif https://i.imgur.com/D0r3sSg.gif $ echo 29*15 | node . > ./test3.gif https://i.imgur.com/imvQO5g.gif 試しに一桁×一桁やってみたらなんだか微妙な計算過程に… $ echo 5*5 | node . > ./test.gif https://i.imgur.com/8z3kZPf.gif あと割り算はAPIからでは計算過程のURL取れなかった http://mevius.5ch.net/test/read.cgi/tech/1549160513/735
736: デフォルトの名無しさん [] 2019/03/17(日) 19:54:31.54 ID:k04EM+xl >>735 こうやって足し算の筆算とは言え、人間の思考過程をプログラムで再現してみると小学生から結構複雑な処理してるんだなと思う。 もっと人間の処理に近づけるなら文字列として認識して、1桁目を数字に変換して〜みたいになるんだろうけど。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/736
737: デフォルトの名無しさん [sage] 2019/03/17(日) 22:48:25.97 ID:t+AGMGYK >>494 (CSVはコンマ区切りの値だよ) http://mevius.5ch.net/test/read.cgi/tech/1549160513/737
738: デフォルトの名無しさん [age] 2019/03/17(日) 23:32:46.95 ID:wEirTeMQ >>737 カンマを逆から読むとマンコですよ http://mevius.5ch.net/test/read.cgi/tech/1549160513/738
739: デフォルトの名無しさん [age] 2019/03/17(日) 23:33:11.60 ID:wEirTeMQ 致命的なミスを犯しました http://mevius.5ch.net/test/read.cgi/tech/1549160513/739
740: デフォルトの名無しさん [sage] 2019/03/17(日) 23:35:38.92 ID:QL30OvU4 許さないからな http://mevius.5ch.net/test/read.cgi/tech/1549160513/740
741: デフォルトの名無しさん [sage] 2019/03/18(月) 00:38:16.94 ID:9+FFV4Nx >>494 >>496 Perl5 use feature say; @data = <DATA>; chomp @data; @tags = split' ', shift @data; %idx = map{$_ => $n++} @tags; @sum = 0 x $n; for (@data) { @fs = split' '; for (0..$n-1) { $v = $fs[$_]; if ($v =~ /^(\d+\.\d*|\d*\.\d+|\d+)$/) { $sum[$_] += $v; } else { warn "変なデータが紛れ込んでいます_ノ乙(、ン、)_`$v'\n"; } } } for (@tags) { say "$_ の合計 = ", $sum[$idx{$_}]; } __DATA__ カラム1 カラム2 カラム3 カラム4 1,0 2.0 3.0 4.0 2.1 3.1 4.1 5.1 ~ $ perl 13_494.pl 変なデータが紛れ込んでいます_ノ乙(、ン、)_`1,0' カラム1 の合計 = 2.1 カラム2 の合計 = 5.1 カラム3 の合計 = 7.1 カラム4 の合計 = 9.1 http://mevius.5ch.net/test/read.cgi/tech/1549160513/741
742: デフォルトの名無しさん [] 2019/03/18(月) 01:13:14.07 ID:4b49AUHf >>738 マンコ・カパックは、インカ神話によるクスコ王国の初代国王である。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/742
743: デフォルトの名無しさん [] 2019/03/21(木) 03:20:09.08 ID:ZuEvTwkR >>723 Kotlin https://paiza.io/projects/IQdiv40t3eXnM8CEXzF2Og http://mevius.5ch.net/test/read.cgi/tech/1549160513/743
744: デフォルトの名無しさん [] 2019/03/21(木) 05:20:06.50 ID:ZuEvTwkR >>675 Kotlin https://paiza.io/projects/SlCrKgxVJRghtvESdUMR_A リストの中の最小値をループして探し出しように作っただけなんだけど、こんなんで良いのか? (MutableListなのでsort()しちゃうという手抜きワザもあったがそれだと表面上分岐が一つもない状態になるので止めた)。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/744
745: デフォルトの名無しさん [sage] 2019/03/21(木) 11:30:55.91 ID:4Lv8Ku6J >>494 Squeak Smalltalk。コンマを分割と見なしそれぞれについての和を出力させてみた | fn | fn := [:columnName | FileStream oldFileNamed: 'data.txt' do: [:file | | index sum | index := (file nextLine subStrings: ' ') indexOf: columnName. sum := 0. [file atEnd] whileFalse: [ | next | next := ((file nextLine subStrings: ' ') at: index) subStrings: ','. sum := sum + (next size = 1 ifTrue: [next anyOne] ifFalse: [next])]. sum ] ]. fn value: 'カラム3'. "=> 7.1 " fn value: 'カラム1'. "=> #(3.1 2.1) " http://mevius.5ch.net/test/read.cgi/tech/1549160513/745
746: デフォルトの名無しさん [] 2019/03/21(木) 13:37:55.15 ID:p+hkSRzH お題 長方形の盤で左上から上下左右に一マスずつ移動して全てのマスを 辿る。 移動の順番を表した数字を向きと終点を表す文字(↑↓←→★、 上下左右終、UDLRG、^V<>Gなど)に変換する。 入力 1 4 5 6 2 3 8 7 15 14 9 10 16 13 12 11 出力 ↓→→↓ →↑↓← ↓←→↓ ★↑←← http://mevius.5ch.net/test/read.cgi/tech/1549160513/746
747: デフォルトの名無しさん [sage] 2019/03/21(木) 14:37:03.32 ID:Krn8F3T2 >>746 Perl5 @a = map{[split]} <DATA>; for $y (0..$#a) { $h{$a[$y][$_]} = [$y,$_,''] for 0..$#a; } @s = keys %h; %r = qw{-1,0 ↑ 1,0 ↓ 0,-1 ← 0,1 →}; for $i (1..@s) { if ($i == @s) { $d = '★' } else { $y = $h{$i+1}->[0] - $h{$i}->[0]; $x = $h{$i+1}->[1] - $h{$i}->[1]; $d = $r{"$y,$x"} } $h{$i}->[2] = $d; } ($y, $x, $d) = @$_, $a[$y][$x] = $d for values %h; use feature say; say "@$_" for @a; __DATA__ 1 4 5 6 2 3 8 7 15 14 9 10 16 13 12 11 実行結果 ~ $ perl 13_746.pl ↓ → → ↓ → ↑ ↓ ← ↓ ← → ↓ ★ ↑ ← ← http://mevius.5ch.net/test/read.cgi/tech/1549160513/747
748: デフォルトの名無しさん [sage] 2019/03/21(木) 22:33:42.92 ID:4Lv8Ku6J >>723 Squeak Smalltalk | fn | fn := [:int1 :int2 | | strings width digits interms ans max line | strings := {int1. int2} collect: #asString. width := (strings detectMax: #size) size. digits := strings collect: [:str | (str forceTo: width paddingStartWith: $0) reversed asArray collect: #asString]. interms := (digits reduce: #+) collectWithIndex: [:interm :idx | interm, (String new: idx-1 withAll: Character space)]. ans := interms polynomialEval: '10'. strings atLast: 1 put: '+ ', strings last. max := ((strings, {ans}) collect: #size) max. line := String new: max withAll: $-. (strings, {line}, interms, {line. ans} collect: [:str | (str forceTo: max paddingStartWith: Character space) withoutTrailingBlanks ]) asStringWithCr ]. fn value: 987 value: 65. "=> ' 987 + 65 ---- 12 14 9 ---- 1052' " http://mevius.5ch.net/test/read.cgi/tech/1549160513/748
749: デフォルトの名無しさん [] 2019/03/22(金) 05:04:29.93 ID:NMDgNTgg >>746 Kotlin https://paiza.io/projects/kKx0DA0gpsZ6He2ZxKSF_A http://mevius.5ch.net/test/read.cgi/tech/1549160513/749
750: デフォルトの名無しさん [sage] 2019/03/22(金) 12:12:43.26 ID:bmKj2SZK >>746 Squeak Smalltalk | fn | fn := [:str | | map range sign goal position next atEnd | map := str lines collect: [:line | line subStrings collect: #asInteger]. range := 1@1 extent: map first size @ map size. sign := (0 asPoint fourNeighbors with: #(→ ↓ ← ↑) collect: #->) as: Dictionary. goal := #★. position := 1@1. next := 2. atEnd := false. [atEnd] whileFalse: [ | found | found := position fourNeighbors detect: [:neighPos | (range containsPoint: neighPos) and: [((map at: neighPos y) at: neighPos x) = next] ] ifNone: [atEnd := true. Float nan]. (map at: position y) at: position x put: (sign at: found - position ifAbsent: goal). position := found. next := next + 1. ]. (map collect: #join) asStringWithCr ]. fn value: '1 4 5 6 2 3 8 7 15 14 9 10 16 13 12 11' "=> '↓→→↓ →↑↓← ↓←→↓ ★↑←←' " http://mevius.5ch.net/test/read.cgi/tech/1549160513/750
751: デフォルトの名無しさん [sage] 2019/03/22(金) 20:50:59.33 ID:KB/r9SyN >>746 octave https://ideone.com/BacNm6 http://mevius.5ch.net/test/read.cgi/tech/1549160513/751
752: デフォルトの名無しさん [] 2019/03/22(金) 21:14:53.89 ID:97922Y7I まだ見にくいなあ。線を繋いで矢印を入れることはできないかな。 http://mevius.5ch.net/test/read.cgi/tech/1549160513/752
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 250 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.021s