プログラミングのお題スレです。
【出題と回答例】
1 名前:デフォルトの名無しさん
お題:お題本文
2 名前:デフォルトの名無しさん
>>1 使用言語
回答本文
結果がある場合はそれも
【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
http://codepad.org/
http://compileonline.com/
http://rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
http://melpon.org/wandbox
https://paiza.io/
宿題は宿題スレがあるのでそちらへ。
※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/
プログラミングのお題スレ Part13
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/02/03(日) 11:21:53.20ID:72eosYJ+644デフォルトの名無しさん
2019/03/13(水) 00:29:04.16ID:Eq+ygVqk645デフォルトの名無しさん
2019/03/13(水) 00:51:17.73ID:vPzmbHWs646デフォルトの名無しさん
2019/03/13(水) 00:54:41.38ID:bUFEpZHr >>638
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です
えぇ…
入力:
[あああ]
いいい=ううう
[えええ]
おおお=かかか
出力:
あああ:いいい:ううう
えええ:おおお:かかか
少なくとも任意の文字列には対応してるじゃん。不当指摘だ!
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です
えぇ…
入力:
[あああ]
いいい=ううう
[えええ]
おおお=かかか
出力:
あああ:いいい:ううう
えええ:おおお:かかか
少なくとも任意の文字列には対応してるじゃん。不当指摘だ!
647デフォルトの名無しさん
2019/03/13(水) 01:18:15.16ID:FktqEJYT >>645 javascript
const seqSqArr = n => Array.from({length: n}).map((v, i) => Array.from({length: n}, (v, j) => n * i + j + 1));
console.log(seqSqArr(3));
//=> [[1,2,3],[4,5,6],[7,8,9]]
console.log(seqSqArr(7));
//=> [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]
const seqSqArr = n => Array.from({length: n}).map((v, i) => Array.from({length: n}, (v, j) => n * i + j + 1));
console.log(seqSqArr(3));
//=> [[1,2,3],[4,5,6],[7,8,9]]
console.log(seqSqArr(7));
//=> [[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]
649デフォルトの名無しさん
2019/03/13(水) 05:11:02.02ID:36vLAC/n >>639 J
f =: 3 : 0
10 | 10 - 10 | +/ (12 $ 1 3) * "."0 }: y -. '-'
)
f '978-4-10-109205-8'
8
f '978-4873115870'
0
f =: 3 : 0
10 | 10 - 10 | +/ (12 $ 1 3) * "."0 }: y -. '-'
)
f '978-4-10-109205-8'
8
f '978-4873115870'
0
650デフォルトの名無しさん
2019/03/13(水) 06:35:32.94ID:vPzmbHWs >>636,637,645,647
Haskell
main = ps 3 >> putStrLn "" >> ps 7
where ps = print.seqSqList
seqSqList n = (take n.iterate (map (+ n))) [1..n]
out:
[[1,2,3],[4,5,6],[7,8,9]]
[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]
Haskell
main = ps 3 >> putStrLn "" >> ps 7
where ps = print.seqSqList
seqSqList n = (take n.iterate (map (+ n))) [1..n]
out:
[[1,2,3],[4,5,6],[7,8,9]]
[[1,2,3,4,5,6,7],[8,9,10,11,12,13,14],[15,16,17,18,19,20,21],[22,23,24,25,26,27,28],[29,30,31,32,33,34,35],[36,37,38,39,40,41,42],[43,44,45,46,47,48,49]]
651デフォルトの名無しさん
2019/03/13(水) 20:01:04.25ID:loIc2/nm652デフォルトの名無しさん
2019/03/13(水) 22:22:09.99ID:H95Q/dPG こうかな?
;; Common Lisp
(defun seq-sq-list (n)
(labels ((sub (i r)
(if (zerop i)
r
(sub (1- i) (if (zerop (mod i n))
(cons (list i) r)
(cons (cons i (car r)) (cdr r)))))))
(sub (* n n) nil)))
;; Common Lisp
(defun seq-sq-list (n)
(labels ((sub (i r)
(if (zerop i)
r
(sub (1- i) (if (zerop (mod i n))
(cons (list i) r)
(cons (cons i (car r)) (cdr r)))))))
(sub (* n n) nil)))
653さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/13(水) 23:29:50.59ID:KwyST1w4 お題: ピリオド区切りの二つのバージョン番号を比較し、大小関係を判定した結果を-1, 0, 1のいずれとして返せ。
0.1.2 > 0.0: 1
1.2.3 < 1.3: -1
0.0.0 == 0.0: 0
0.1.2 > 0.0: 1
1.2.3 < 1.3: -1
0.0.0 == 0.0: 0
654デフォルトの名無しさん
2019/03/14(木) 00:08:08.19ID: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
手抜き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
655デフォルトの名無しさん
2019/03/14(木) 01:08:57.36ID: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
$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
656デフォルトの名無しさん
2019/03/14(木) 01:16:23.50ID: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
$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
657デフォルトの名無しさん
2019/03/14(木) 06:43:00.64ID:3EvgP48J >>653
0.0.1 > 0.0 でいいのか?
0.0.1 > 0.0 でいいのか?
659デフォルトの名無しさん
2019/03/14(木) 10:42:18.54ID: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"]
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"]
660さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 10:59:38.01ID:PwP2txgq661デフォルトの名無しさん
2019/03/14(木) 11:23:19.67ID:YiVNNcx0 ごめん勝手にsemverかと思い込んでた
662さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 11:35:04.68ID:1+g2CCuw LaTeXのバージョンシステムはちょっと特殊で、円周率に近付くようになってる。この場合は文字列として比較しないといけない。
一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。
まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。
一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。
まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。
663さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 11:47:43.06ID:1+g2CCuw 一番確実なバージョン大小判定方法は、リリースごとに年月日とバージョン情報を記録しておくことだ。
664デフォルトの名無しさん
2019/03/14(木) 13:52:35.97ID:uKED8jms665デフォルトの名無しさん
2019/03/14(木) 15:56:35.04ID: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
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
666デフォルトの名無しさん
2019/03/14(木) 18:00:35.68ID:38t26SL0 お題: 何も出力しないプログラム自身のコードをソートするとhello worldを出力するプログラムを作れ
667デフォルトの名無しさん
2019/03/14(木) 18:07:12.84ID: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
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
668さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 18:11:49.83ID:1+g2CCuw >>667
バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。
バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。
669デフォルトの名無しさん
2019/03/14(木) 18:14:06.49ID:YPV07ntD670デフォルトの名無しさん
2019/03/14(木) 18:32:38.72ID: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
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
671さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 18:44:00.25ID:1+g2CCuw >>670
残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。
残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。
672デフォルトの名無しさん
2019/03/14(木) 18:50:17.55ID:dvZ8z+Z0673デフォルトの名無しさん
2019/03/14(木) 18:58:38.18ID:dvZ8z+Z0674さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 18:59:00.09ID:1+g2CCuw ソフトウェア開発におけるバージョン管理は、製造メーカーにおける型番管理と同じくらい重要である。
検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。
インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。
検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。
インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。
675デフォルトの名無しさん
2019/03/14(木) 18:59:16.90ID:38t26SL0 お題: 3つの数の最小値を1回の分岐で決めろ!
676デフォルトの名無しさん
2019/03/14(木) 19:55:29.27ID: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"]
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"]
677デフォルトの名無しさん
2019/03/14(木) 19:59:51.70ID:YiVNNcx0 あっ間違えた
家帰ってから直す
家帰ってから直す
678デフォルトの名無しさん
2019/03/14(木) 20:14:25.92ID:vvVzV1YI >>671 どこにそんな決まりがあるの?
普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。
総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。
普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。
総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。
679デフォルトの名無しさん
2019/03/14(木) 20:14:59.41ID:ko69m/9G 見つけた
RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org
https://metacpan.org/pod/RPM::VersionSort
RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org
https://metacpan.org/pod/RPM::VersionSort
680デフォルトの名無しさん
2019/03/14(木) 20:16:24.45ID:vvVzV1YI とにかくバージョン番号が異なれば別のバージョンとみなすのが普通だろ。
同じと思う方がおかしい。
同じと思う方がおかしい。
681デフォルトの名無しさん
2019/03/14(木) 20:16:49.16ID:0tbf1s3D お題:“木”という漢字を使って以下のようなフラクタル図形を描け
n=0
木
n=1
-木
木木
n=2
---木
--木木
-木--木
木木木木
n=3
-------木
------木木
-----木--木
----木木木木
---木------木
--木木----木木
-木--木--木--木
木木木木木木木木
※ハイフンはスペースだと思ってください
n=0
木
n=1
-木
木木
n=2
---木
--木木
-木--木
木木木木
n=3
-------木
------木木
-----木--木
----木木木木
---木------木
--木木----木木
-木--木--木--木
木木木木木木木木
※ハイフンはスペースだと思ってください
682さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/14(木) 20:26:23.57ID:1+g2CCuw >>678
Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。
Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。
683デフォルトの名無しさん
2019/03/14(木) 20:45:22.76ID:vvVzV1YI >>682 そんなローカルールなんて知るかよ。 もしそういう意図なら問題を訂正しろよ。 いちいち誰かのいちゃもんに付き合ってる暇はない。
684デフォルトの名無しさん
2019/03/14(木) 20:52:19.11ID: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));
//いいかげん結果省略
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));
//いいかげん結果省略
685デフォルトの名無しさん
2019/03/14(木) 22:10:39.99ID:8oAE3RnG >>683
例に0.0.0と0.0が等しいって書いてあるんだが
例に0.0.0と0.0が等しいって書いてあるんだが
686デフォルトの名無しさん
2019/03/14(木) 23:16:14.88ID:3EvgP48J687デフォルトの名無しさん
2019/03/14(木) 23:41:35.78ID: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 "
| 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 "
688デフォルトの名無しさん
2019/03/15(金) 00:00:24.31ID: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
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
689デフォルトの名無しさん
2019/03/15(金) 00:10:49.43ID: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、いいな…
@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、いいな…
691デフォルトの名無しさん
2019/03/15(金) 00:45:04.99ID:GUP5tEyB 2回分岐してるように見えるが
692デフォルトの名無しさん
2019/03/15(金) 00:50:01.20ID:ltf0XXfV693デフォルトの名無しさん
2019/03/15(金) 00:52:36.60ID:J+j6Qj2a694デフォルトの名無しさん
2019/03/15(金) 01:15:34.20ID: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) "
| 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) "
695デフォルトの名無しさん
2019/03/15(金) 01:34:55.02ID: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. "=>
'---木
--木木
-木--木
木木木木' "
| 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. "=>
'---木
--木木
-木--木
木木木木' "
696デフォルトの名無しさん
2019/03/15(金) 01:51:53.98ID: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]
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]
697デフォルトの名無しさん
2019/03/15(金) 08:40:18.32ID:VdqhZ9XO698デフォルトの名無しさん
2019/03/15(金) 10:29:40.47ID:4uXCwYPV699デフォルトの名無しさん
2019/03/15(金) 10:50:31.62ID:ltf0XXfV700デフォルトの名無しさん
2019/03/15(金) 10:54:07.06ID:EVqxIhVf701デフォルトの名無しさん
2019/03/15(金) 11:30:37.72ID: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
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
702デフォルトの名無しさん
2019/03/15(金) 12:06:15.98ID:phFelL6J >>666
「ソートすると」ではなく「ソートしてからその出力を実行またはコンパイルして実行すると」なのでは?
「ソートすると」ではなく「ソートしてからその出力を実行またはコンパイルして実行すると」なのでは?
703デフォルトの名無しさん
2019/03/15(金) 13:00:31.13ID:1zMWa3GW >>702
せやで
せやで
704デフォルトの名無しさん
2019/03/15(金) 13:38:24.99ID:CRw2aIHX そーっとしておこう
705デフォルトの名無しさん
2019/03/15(金) 15:16:52.97ID:1zMWa3GW お題: プログラムのコードの文字を縦読みしたコードが実行可能なコード
706デフォルトの名無しさん
2019/03/15(金) 17:37:30.24ID:g4S7Lu9n お題
2桁16進数化したものをつなげた形でIPアドレスが与えられる。(例:192.168.0.1 -> C0A80001)
与えられたIPアドレスからホスト名を逆引きせよ。
例
08080808 -> google-public-dns-a.google.com
9da6e21a -> www.cnn.com
2桁16進数化したものをつなげた形でIPアドレスが与えられる。(例:192.168.0.1 -> C0A80001)
与えられたIPアドレスからホスト名を逆引きせよ。
例
08080808 -> google-public-dns-a.google.com
9da6e21a -> www.cnn.com
707デフォルトの名無しさん
2019/03/15(金) 18:51:48.50ID:phFelL6J708673
2019/03/15(金) 19:08:00.81ID:3zDqFokC709デフォルトの名無しさん
2019/03/15(金) 19:13:09.78ID: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' ]
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' ]
710デフォルトの名無しさん
2019/03/16(土) 01:04:28.66ID: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
>>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
711デフォルトの名無しさん
2019/03/16(土) 02:33:36.77ID:ksQagb59712デフォルトの名無しさん
2019/03/16(土) 06:51:03.68ID: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]
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]
713デフォルトの名無しさん
2019/03/16(土) 14:50:17.74ID: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
---木---
--木木--
-木--木-
木木木木
注) 正直者には、-はスペースに見えます。
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
---木---
--木木--
-木--木-
木木木木
注) 正直者には、-はスペースに見えます。
714デフォルトの名無しさん
2019/03/16(土) 16:51:50.43ID:EVMD7h0V お題: プログラム言語をなにも知らない人にもプログラムの意味が理解できるコメント無しのhello worldを出力するコプログラム
715デフォルトの名無しさん
2019/03/16(土) 17:11:38.87ID:0dLFyPZP わかりません><
716デフォルトの名無しさん
2019/03/16(土) 17:16:48.87ID:EVMD7h0V お題: 文字列に丁度いい具合にグリッチを入れて超かっこいい文字列を作るプログラム
717さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/03/16(土) 17:18:04.51ID:PQISp+Pa グリッチは広辞苑には載っていません。説明して下さい。
718デフォルトの名無しさん
2019/03/16(土) 17:21:14.90ID:EVMD7h0V >>717
いやです
いやです
719デフォルトの名無しさん
2019/03/16(土) 17:36:13.64ID:0dLFyPZP720デフォルトの名無しさん
2019/03/16(土) 20:05:38.53ID:INaBYg0f721707
2019/03/17(日) 01:26:35.49ID:5dC2feuc >>706
Kotlin
https://paiza.io/projects/PHrLKrBMqZYA6AC9bUWDcg
何故か 9da6e21a の方はホスト名になってくれず IP アドレスの文字列になる。
Kotlin
https://paiza.io/projects/PHrLKrBMqZYA6AC9bUWDcg
何故か 9da6e21a の方はホスト名になってくれず IP アドレスの文字列になる。
722707
2019/03/17(日) 02:33:00.06ID:5dC2feuc >>706
C
https://paiza.io/projects/ZW4sJq_ea_wQQxe_vOlGjQ
gethostbyname() や gethostbyaddr() ではなく getnameinfo() 使ってみました。
C
https://paiza.io/projects/ZW4sJq_ea_wQQxe_vOlGjQ
gethostbyname() や gethostbyaddr() ではなく getnameinfo() 使ってみました。
723デフォルトの名無しさん
2019/03/17(日) 06:18:59.33ID:k04EM+xl 2桁までの足し算の筆算を表示せよ。
例:
29
+15
----
14
3
----
44
29
+ 5
----
14
2
----
34
例:
29
+15
----
14
3
----
44
29
+ 5
----
14
2
----
34
724デフォルトの名無しさん
2019/03/17(日) 06:20:05.97ID:5dC2feuc725デフォルトの名無しさん
2019/03/17(日) 07:23:54.75ID:1ggb6IGK お題
実数a,b (0<a<b)が与えられたとき、平面座標(a,b),(0,0),(a,-b)の3点を通る円の半径を求める。
実数a,b (0<a<b)が与えられたとき、平面座標(a,b),(0,0),(a,-b)の3点を通る円の半径を求める。
726デフォルトの名無しさん
2019/03/17(日) 07:27:24.80ID:vfP8HMqf 余弦定理と正弦定理1回ずつ使うだけだな
727デフォルトの名無しさん
2019/03/17(日) 07:31:01.10ID:OwOB9RAr 数学で解けてもコードに落とせない人っているよね
728デフォルトの名無しさん
2019/03/17(日) 08:41:45.83ID:k04EM+xl >>727
居るけど、そういう人って機械自体が苦手な人。
機械と数学に強くてコードに落とせない人には会ったことがない。
機械には強いけど数学苦手だからコードに落とせないって人は(自分含め)沢山いるが。
居るけど、そういう人って機械自体が苦手な人。
機械と数学に強くてコードに落とせない人には会ったことがない。
機械には強いけど数学苦手だからコードに落とせないって人は(自分含め)沢山いるが。
729デフォルトの名無しさん
2019/03/17(日) 12:19:22.82ID:gm8A83sV 自転車修理屋さんが機械に強いけどコードなんて、かけなさそう
730デフォルトの名無しさん
2019/03/17(日) 12:38:59.54ID: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
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
731デフォルトの名無しさん
2019/03/17(日) 12:40:50.32ID:TUY5K+QC732デフォルトの名無しさん
2019/03/17(日) 12:41:06.87ID:PfKDQB+U733デフォルトの名無しさん
2019/03/17(日) 13:19:09.72ID:k04EM+xl >>723
掛け算に対応したり、1桁どうしの計算用フォーマット作ったりしてたら規模がでかくなった(・ω・`)
1
* 2
-----
2
10
* 0
-----
0
Haskell
https://ideone.com/SCzGKq
掛け算に対応したり、1桁どうしの計算用フォーマット作ったりしてたら規模がでかくなった(・ω・`)
1
* 2
-----
2
10
* 0
-----
0
Haskell
https://ideone.com/SCzGKq
734デフォルトの名無しさん
2019/03/17(日) 13:39:28.89ID:yIqzgq0g735デフォルトの名無しさん
2019/03/17(日) 18:42:43.38ID: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取れなかった
// 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取れなかった
736デフォルトの名無しさん
2019/03/17(日) 19:54:31.54ID:k04EM+xl >>735
こうやって足し算の筆算とは言え、人間の思考過程をプログラムで再現してみると小学生から結構複雑な処理してるんだなと思う。
もっと人間の処理に近づけるなら文字列として認識して、1桁目を数字に変換して〜みたいになるんだろうけど。
こうやって足し算の筆算とは言え、人間の思考過程をプログラムで再現してみると小学生から結構複雑な処理してるんだなと思う。
もっと人間の処理に近づけるなら文字列として認識して、1桁目を数字に変換して〜みたいになるんだろうけど。
737デフォルトの名無しさん
2019/03/17(日) 22:48:25.97ID:t+AGMGYK >>494
(CSVはコンマ区切りの値だよ)
(CSVはコンマ区切りの値だよ)
738デフォルトの名無しさん
2019/03/17(日) 23:32:46.95ID:wEirTeMQ >>737
カンマを逆から読むとマンコですよ
カンマを逆から読むとマンコですよ
739デフォルトの名無しさん
2019/03/17(日) 23:33:11.60ID:wEirTeMQ 致命的なミスを犯しました
740デフォルトの名無しさん
2019/03/17(日) 23:35:38.92ID:QL30OvU4 許さないからな
741デフォルトの名無しさん
2019/03/18(月) 00:38:16.94ID: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
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
742デフォルトの名無しさん
2019/03/18(月) 01:13:14.07ID:4b49AUHf >>738
マンコ・カパックは、インカ神話によるクスコ王国の初代国王である。
マンコ・カパックは、インカ神話によるクスコ王国の初代国王である。
743デフォルトの名無しさん
2019/03/21(木) 03:20:09.08ID:ZuEvTwkR■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 🏡
- スーパーが開くまで約4時間何すりゃいいんだ?
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 飲みの約束だるい
- 減税は低所得者差別
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
