[過去ログ]
プログラミングのお題スレ Part13 (1002レス)
プログラミングのお題スレ Part13 http://mevius.5ch.net/test/read.cgi/tech/1549160513/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
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
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
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
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
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
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
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
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
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.068s