19/03/10 21:16:39.36 KcIurEvX.net
>>559
Java
URLリンク(paiza.io)
601:デフォルトの名無しさん
19/03/10 21:20:18.73 z5UigTCL.net
>>571 ruby
URLリンク(ideone.com)
>>567
String#lines ←これの存在知らなかった
勉強になりました
602:デフォルトの名無しさん
19/03/10 21:46:22.59 KcIurEvX.net
>>547
Java
URLリンク(paiza.io)
603:デフォルトの名無しさん
19/03/10 21:59:51.08 5renFNS0.net
>>571
@Mathematica
URLリンク(ideone.com)
604:567
19/03/10 22:01:14.30 bEzyp4mc.net
>>589
余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる!
Rubyは、色々と便利なものを作っている
p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT
#=> ["a", "b"]
605:デフォルトの名無しさん
19/03/10 22:14:16.51 SJp/1k7U.net
>>571 Common Lisp
URLリンク(ideone.com)
606:デフォルトの名無しさん
19/03/10 22:19:23.44 KcIurEvX.net
>>579
Java
URLリンク(paiza.io)
607:デフォルトの名無しさん
19/03/10 22:19:48.10 KcIurEvX.net
ごめん間違えた
>>571です
608:デフォルトの名無しさん
19/03/10 23:51:29.55 THpHptm5.net
>>571 Node.js
URLリンク(ideone.com)
609:デフォルトの名無しさん
19/03/11 00:57:47.40 HrDBQthw.net
>>571 Squeak/Pharo Smalltalk。nを複数指定可で
| fn |
fn := [:str :ns |
| ans |
ans := (String new: str size withAll: $*), String cr, str.
ns do: [:n | ans swap: n with: n + str size + 1].
ans
].
fn value: 'abc' value: #(2). "=>
'*b*
a*c' "
fn value: 'abcdef' value: #(2 3 5). "=>
'*bc*e*
a**d*f' "
610:デフォルトの名無しさん
19/03/11 01:39:23.53 +Nlo5Elt.net
>>547
Kotlin
URLリンク(paiza.io)
611:デフォルトの名無しさん
19/03/11 02:41:21.51 +Nlo5Elt.net
>>559
Kotlin
URLリンク(paiza.io)
612:デフォルトの名無しさん
19/03/11 07:59:46.54 hFtMxxmn.net
>>547 Perl5
URLリンク(ideone.com)
push @{$h{lc $_}}, $_ for <STDIN>;
print "@{$_}" for grep{@$_ > 1} values %h;
613:デフォルトの名無しさん
19/03/11 09:18:51.69 D2PSGRy3.net
>>571 Python
def split3(s,p=1) :
r0= s[:p]+'*'+s[p+1:]
r1= '*'*p + s[p] + '*'*(len(s)-(p+1))
return r0+'\n'+r1
print(split3('abcd',2))
print(split3('abc',0))
'''結果
ab*d
**c*
*bc
a**
'''
614:デフォルトの名無しさん
19/03/11 10:48:42.57 u4Ymakq9.net
お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由
例:
入力: >>>>>vvvvv<<<<^^^^
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v
615:デフォルトの名無しさん
19/03/11 11:00:20.46 JmszPBJl.net
これって一歩目はなんでもいいよね
616:デフォルトの名無しさん
19/03/11 11:35:10.21 AGCERQh7.net
>>571 Io
f := method(s,n,
"*" repeated(s size)atPut(n - 1, s at(n - 1)) println
s asMutable atPut(n - 1, 42)println
)
f("abc",2)
実行結果
*b*
a*c
617:デフォルトの名無しさん
19/03/11 11:45:13.16 +cahZmCl.net
>>602
それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?
618:デフォルトの名無しさん
19/03/11 11:48:56.08 u4Ymakq9.net
>>603
>>605
そういうめんどくさい質問がこないように、
それ以外は自由と付け加えてある
619:デフォルトの名無しさん
19/03/11 13:45:52.04 +cahZmCl.net
>>606
仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。
620:デフォルトの名無しさん
19/03/11 16:12:48.47 TMb+YRHxP
>>571
>>597
Haskellでも複数対応してみた。
main = mapM_ (putStrLn.secret "abcdef" [2,3,5]) [elem,notElem]
secret xs ns = secret' xs 1 ns
where
secret' [] _ _ _ = []
secret' (x:xs) n as f | f n as = x:secret' xs (n + 1) as f
secret' (_:xs) n as f = '*':secret' xs (n + 1) as f
621:デフォルトの名無しさん
19/03/11 15:42:22.28 7+lrfCi1.net
>>605
そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは?
ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。
622:デフォルトの名無しさん
19/03/11 16:07:33.07 5vEtkzIB.net
>>606 何でこれ以外の形は許さんと言えないんだ?
自由にどうぞなんて問題じゃ無いだろ。
623:デフォルトの名無しさん
19/03/11 16:18:14.19 ZVqwh3rP.net
>>607,610
こいつらホント掃き溜めのゴミだな
624:デフォルトの名無しさん
19/03/11 16:19:55.06 +cahZmCl.net
>>571
Kotlin
URLリンク(paiza.io)
625:デフォルトの名無しさん
19/03/11 16:25:40.59 +cahZmCl.net
>>609
なるほど。しかしそれならばその事を書いておいて欲しかったな。
>>611
何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?
626:デフォルトの名無しさん
19/03/11 16:58:12.79 PGatxMde.net
>>602
出力おかしくねぇ?最初と最後の行は5列だけど
間の行ぜんぶ6列になってるぞ?
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v
こうじゃね?
>>>>>
^***v
^***v
^***v
^***v
<<<<v
627:デフォルトの名無しさん
19/03/11 17:14:58.23 +cahZmCl.net
ま、いいや。よくわかんない問題は放っておこう。
628:デフォルトの名無しさん
19/03/11 18:14:45.27 I7wjNxVQq
>>547
Haskell
import Data.Char
main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","f"]
filename [] = []
filename (xs:xss) |length a > 1 = a:(filename.drop (length a)) (xs:xss)
where
a = filter ((map toUpper xs ==).map toUpper) (xs:xss)
filename (_:xss) = filename xss
629:デフォルトの名無しさん
19/03/11 19:08:54.88 TMb+YRHxP
ソートするの忘れてた…。
import Data.Char
main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]
filename [] = []
filename (xs:xss) | length a > 1 = a:(filename.drop (length a)) sorted
where
a = filter ((map toUpper xs ==).map toUpper) sorted
sorted = ssort (xs:xss)
filename (_:xss) = filename xss
ssort [] = []
ssort xs = minimum xs:(ssort.delete (minimum xs)) xs
delete _ [] = []
delete n (x:xs) | n == x = xs
delete n (x:xs) = x:delete xs
630:デフォルトの名無しさん
19/03/11 19:49:55.14 TMb+YRHxP
度々ごめん・・・
バグが有った。
そもそもソートとか関係なかった。
import Data.Char
main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","cd","cD","CD","ab.txt","f"]
filename [] = []
filename (xs:xss) | length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss
631:デフォルトの名無しさん
19/03/11 19:21:39.70 PGatxMde.net
>>602 javascript
長くなっちった
URLリンク(ideone.com)
入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv
出力:
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********
632:デフォルトの名無しさん
19/03/11 19:36:33.05 /Vx80pKW.net
お題
m×nマスのチェス盤を考える。
1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。
ナイトが訪れることのできるマスの個数を求めよ。
m=1, n=1
=> 1
m=3, n=3
=> 8 (真ん中のマスを訪れることができない)
m=4, n=4
=> 16
633:デフォルトの名無しさん
19/03/11 19:36:35.88 DXpwYxNa.net
>>619 説明がないと何をどうやってるのかわけわからん。
先ずは入力と出力をどう解釈して作ったのか?
形にも一貫性があるとは思えないけど。
しかしこんなのがどんどん出てきたら、煩わしいだけ。
634:デフォルトの名無しさん
19/03/11 20:02:17.74 JmszPBJl.net
いや、その通りに歩くんだろ
635:デフォルトの名無しさん
19/03/11 20:07:58.88 5vEtkzIB.net
出題通り以外の回答はやめてほしいな。
それ以外の回答をする場合は、解説文も日本語で書いてくれよ。
不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見�
636:黷ホわかるというのは無し。
637:デフォルトの名無しさん
19/03/11 21:26:59.93 ALw/TkKR.net
>>623
ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。
出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。
638:デフォルトの名無しさん
19/03/11 21:31:45.37 1OBeL2+Y.net
>>602 Common Lisp, >>619の移植
URLリンク(ideone.com)
639:デフォルトの名無しさん
19/03/11 22:12:51.52 +V1dboU8.net
>>>v<^^>>
の場合
*^>>
>^>
*<v
640:デフォルトの名無しさん
19/03/11 22:40:32.65 6pdTomDX.net
>>571 octave 複数列指定可能版
URLリンク(ideone.com)
h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + (i == n)), m, 1:numel(m)));
↓
h = @(m, n) cell2mat(arrayfun(@(c, i) {['*'; c] [c; '*']}(1 + any(i == n)), m, 1:numel(m)));
641:デフォルトの名無しさん
19/03/11 23:02:42.18 GdRfR4uu.net
以下の整形式の.ini ファイルから、すべての値を取得して、
「セクション名 : キー名 : 値」で表示する
[sec1]
key1=val1
[sec2]
key2=val2
642:デフォルトの名無しさん
19/03/11 23:51:36.77 /Vx80pKW.net
>>628 C++
URLリンク(ideone.com)
643:デフォルトの名無しさん
19/03/12 00:26:56.22 XpXqAgCh.net
>>628 Perl5
while (<DATA>) {
$s = $1 if /\[(\w+)\]/;
print "$s:$k:$v\n"
if ($k, $v) = /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2
実行結果
~ $ perl 13_623.pl
sec1:key1:val1
sec2:key2:val2
644:デフォルトの名無しさん
19/03/12 00:37:42.27 XpXqAgCh.net
>>630 も少し簡潔に書けるんだった…
while (<DATA>) {
$s = $1 if /\[(\w+)\]/;
print "$s:$1:$2\n" if /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2
645:デフォルトの名無しさん
19/03/12 01:38:34.08 nghHbW0D.net
>>628 javascript(es2018 named capture groups)
`
[sec1]
key1=val1
[sec2]
key2=val2
`.replace(/\[(?<section>.+)\]\n(?<key>.+)=(?<value>.+)\n/g, '$<section>:$<key>:$<value>').trim();
結果:
sec1:key1:val1
sec2:key2:val2
646:デフォルトの名無しさん
19/03/12 05:56:44.85 KPetEW8/.net
>>547
Haskell
import Data.Char
main = (mapM_ print.filename) ["a","aB.txt","Ab.txt","xx","aBc.txt","cd","cD","CD","ab.txt","z"]
filename [] = []
filename (xs:xss)| length a > 1 = a:filename b
where
a = func (==)
b = func (/=)
func f = filter (f (map toUpper xs).map toUpper) (xs:xss)
filename (_:xss) = filename xss
647:デフォルトの名無しさん
19/03/12 17:03:25.03 +VdOvnK/.net
>>620
0 <= m,n <=10億 と仮定して
int64_t cal(int m, int n){
if( m>n ) swap(m, n);
if( m<=1 ) return m;
if( m==2 ) return (n + 1) / 2;
if( n==3 && m==3) return 8;
return (int64_t)n * m;
}
648:デフォルトの名無しさん
19/03/12 18:21:10.69 MLSq27aG.net
>>628 Io
f := method(s,
s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":"))
)
649:デフォルトの名無しさん
19/03/12 18:30:10.82 M/w6PjEF.net
>>624
出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?
650:デフォルトの名無しさん
19/03/12 19:26:28.38 mUEXbKn8.net
お題
数列a[i]を考える。
a[0] = p
a[i+1] = q * a[i] + r
[入力]
p q r n
(p,q,r,nは整数)
(0≦p,q,r≦99)
(0≦n≦10^10)
[出力]
a[n] mod 13 を求めよ
1 2 0 8
=> 9 (2^8 mod 13)
1 0 99 0
=> 1
1 2 3 2
=> 0 (a[0]=1, a[1]=2*1+3=5, a[2]=2*5+3=13)
1 3 5 10000000000
=> ?
651:デフォルトの名無しさん
19/03/12 20:52:19.49 2hm/Dong.net
つまらん
652:デフォルトの名無しさん
19/03/12 21:03:21.90 KPetEW8/.net
>>624
>>547に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか?
意図を無視するのは論外だが。
653:デフォルトの名無しさん
19/03/12 21:07:56.58 KPetEW8/.net
>>637
マシンパワーがあれば式を入れればいいだけってのはね。。。
解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。
いあ、無茶振りだろうから、どれか2つ満たせればおkだが。
654:デフォルトの名無しさん
19/03/12 21:12:06.00 KPetEW8/.net
例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。
655:デフォルトの名無しさん
19/03/12 21:43:25.40 rf03pH6k.net
>>641
一般的なミューテートするカウンタも使っちゃダメってことかな?
656:623
19/03/12 22:49:08.83 oX4bYoPv.net
>>628
お題を修正
[ ] = の3つは、特別な記号です。
それらを含まない行は、無視して
[sec1]
key1=val1
[sec2]
key2=val2
x=y
>>632
セクション名・キー名・値は、特定の文字列ではありません!
特別な記号以外の、任意の文字列です
657:デフォルトの名無しさん
19/03/12 23:03:23.82 oX4bYoPv.net
お題
現行規格のISBN (ISBN-13) のcheck digit は、JANコードと同じく、
「モジュラス10 ウェイト3・1(モジュラス10 ウェイト3)」という計算法にて算出される
一番右側の? の所のcheck digitを除いて、数字以外は無視して、
一番左側の桁から順に、1、3、1、3…を掛けて、それらの和を取る。
和を10で割って出た余りを、10から引く。
ただし、10で割って出た余りの下1桁が0の場合は、check digitを0とする
ISBN 978-4-10-109205-?
9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3
= 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15 = 82
82 ÷ 10 = 8 あまり 2
10 - 2 = 8
幾つかのISBN-13 で、計算してみて!
658:デフォルトの名無しさん
19/03/12 23:07:31.93 +VdOvnK/.net
>>637
URLリンク(ideone.com) c++
小さい数値は力技(bf2)で確認してみたが……
659:デフォルトの名無しさん
19/03/12 23:27:43.44 LDiZRGdZ.net
>>602 Common Lisp
>>625のリファクタリング
ついでに * を空白に、開始地点を A、終了地点を Z に�
660:オてみた https://ideone.com/zMHal6 Python https://pastebin.com/NAGHLtcu 実行結果 https://webmshare.com/Ma3gZ
661:デフォルトの名無しさん
19/03/12 23:42:34.93 2FAQzMGK.net
>>637 C
URLリンク(ideone.com)
エクセルとかで実際に数列を計算してみると、長さ12(剰余の数-1)以下の周期になるっぽいのでそれで求められる。
普通に計算するとq * a[i] + r はどんどん大きくなるけど、
毎回 (q * a[i] + r) mod 13としても、計算に影響はないようなので、オーバーフローもせずに計算できる。
だたし、数学的に正しいか保証しかねるが。
662:デフォルトの名無しさん
19/03/13 00:12:22.73 rGhbMCbu.net
>>645
12 0 11 1
=> 11
というコーナーケースが…
663:デフォルトの名無しさん
19/03/13 00:29:04.16 Eq+ygVqk.net
>>648
確かに、
コメントアウト(bf2)するときに誤ってしまったようだ、
("if(n==0)" だったのだが、いらないなぁ)
どっちにしろ、0や1のテストは、やってない
664:デフォルトの名無しさん
19/03/13 00:51:17.73 vPzmbHWs.net
>>642
だめ。
そこが関数型言語と手続き型言語の考え方の大きな違いだし。
皮肉にも?それ作った時、入門書の関数より考え方の違いが分かった。
665:デフォルトの名無しさん
19/03/13 00:54:41.38 bUFEpZHr.net
>>643
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です
えぇ…
入力:
[あああ]
いいい=ううう
[えええ]
おおお=かかか
出力:
あああ:いいい:ううう
えええ:おおお:かかか
少なくとも任意の文字列には対応してるじゃん。不当指摘だ!
666:デフォルトの名無しさん
19/03/13 01:18:15.16 FktqEJYT.net
>>650 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]]
667:623
19/03/13 02:39:20.04 ZImJqTUY.net
>>651
スマン。漏れの間違い!
key, val などの特定の文字列を置換しているのかと、勘違いしていた
668:デフォルトの名無しさん
19/03/13 05:11:02.02 36vLAC/n.net
>>644 J
f =: 3 : 0
10 | 10 - 10 | +/ (12 $ 1 3) * "."0 }: y -. '-'
)
f '978-4-10-109205-8'
8
f '978-4873115870'
0
669:デフォルトの名無しさん
19/03/13 06:35:32.94 vPzmbHWs.net
>>641,642,650,652
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]]
670:デフォルトの名無しさん
19/03/13 20:01:04.25 loIc2/nm.net
>>628 ruby
URLリンク(ideone.com)
671:デフォルトの名無しさん
19/03/13 22:22:09.99 H95Q/dPG.net
こうかな?
;; 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)))
672:さまよえる蟻人間
19/03/13 23:29:50.59 KwyST1w4.net
お題: ピリオド区切りの二つのバージョン番号を比較し、大小関係を判定した結果を-1, 0, 1のいずれとして�
673:ヤせ。 0.1.2 > 0.0: 1 1.2.3 < 1.3: -1 0.0.0 == 0.0: 0
674:デフォルトの名無しさん
19/03/14 00:08:08.19 TPG8S2ma.net
>>658
手抜き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
675:デフォルトの名無しさん
19/03/14 01:08:57.36 vRIsxo2e.net
>>602 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
676:デフォルトの名無しさん
19/03/14 01:16:23.50 vRIsxo2e.net
>>643 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
677:デフォルトの名無しさん
19/03/14 06:43:00.64 3EvgP48J.net
>>658
0.0.1 > 0.0 でいいのか?
678:さまよえる蟻人間
19/03/14 07:26:20.10 1+g2CCuw.net
>>662
ない桁はゼロと見なす。
679:デフォルトの名無しさん
19/03/14 10:42:18.54 YiVNNcx0.net
>>658 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"]
680:さまよえる蟻人間
19/03/14 10:59:38.01 PwP2txgq.net
>>658
大小関係の定義をまじめに考えましょう。
>>664
JavaScriptならsplit使えるはず。桁数の制限は要らない。
681:デフォルトの名無しさん
19/03/14 11:23:19.67 YiVNNcx0.net
ごめん勝手にsemverかと思い込んでた
682:さまよえる蟻人間
19/03/14 11:35:04.68 1+g2CCuw.net
LaTeXのバージョンシステムはちょっと特殊で、円周率に近付くようになってる。この場合は文字列として比較しないといけない。
一般的なバージョンシステムはドットで区切られた整数を先頭から順に互いに比較して大小関係を定義する。
まれにアルファとかベータとか「限定版」とか訳のわからない文字列が付くことがあるが、これは常識がなければ大小関係を機械的に判定するのは難しい。
683:さまよえる蟻人間
19/03/14 11:47:43.06 1+g2CCuw.net
一番確実なバージョン大小判定方法は、リリースごとに年月日とバージョン情報を記録しておくことだ。
684:デフォルトの名無しさん
19/03/14 13:52:35.97 uKED8jms.net
>>658
Perl
URLリンク(paiza.io)
685:デフォルトの名無しさん
19/03/14 15:56:35.04 TPG8S2ma.net
>>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' <-
686: (xs:xss), map toLower xs `f` map toLower xs'] filename (_:xss) = filename xss
687:デフォルトの名無しさん
19/03/14 18:00:35.68 38t26SL0.net
お題: 何も出力しないプログラム自身のコードをソートするとhello worldを出力するプログラムを作れ
688:デフォルトの名無しさん
19/03/14 18:07:12.84 YPV07ntD.net
>>658 # 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
689:さまよえる蟻人間
19/03/14 18:11:49.83 1+g2CCuw.net
>>672
バージョン番号の各整数の数字は2個以上になることがある。'10.0'と'9.1'を比較せよ。
690:デフォルトの名無しさん
19/03/14 18:14:06.49 YPV07ntD.net
>>672
print( cmp('1.1.0', '1.1') )
# 1
691:デフォルトの名無しさん
19/03/14 18:32:38.72 YPV07ntD.net
>>672 訂正 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
692:さまよえる蟻人間
19/03/14 18:44:00.25 1+g2CCuw.net
>>675
残念だが不正解。比較できる桁がなければゼロと見なす、すなわち、2.0.0は2に等しいと見なす決まりがある。
693:デフォルトの名無しさん
19/03/14 18:50:17.55 dvZ8z+Z0.net
>>658 octave
URLリンク(ideone.com)
694:デフォルトの名無しさん
19/03/14 18:58:38.18 dvZ8z+Z0.net
お題:フィボナッチ数列を最初の10個表示せよ
ruby
URLリンク(ideone.com)
perl6
URLリンク(ideone.com)
695:さまよえる蟻人間
19/03/14 18:59:00.09 1+g2CCuw.net
ソフトウェア開発におけるバージョン管理は、製造メーカーにおける型番管理と同じくらい重要である。
検査逃れのために型番や履歴をごまかしたり、型番管理がなっていないメーカーはメーカー失格である。
インターネット全盛の現在では、型番はウェブ検索しやすいものでなければ、国際競争に負けてしまう。
696:デフォルトの名無しさん
19/03/14 18:59:16.90 38t26SL0.net
お題: 3つの数の最小値を1回の分岐で決めろ!
697:デフォルトの名無しさん
19/03/14 19:55:29.27 YiVNNcx0.net
>>665 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"]
698:デフォルトの名無しさん
19/03/14 19:59:51.70 YiVNNcx0.net
あっ間違えた
家帰ってから直す
699:デフォルトの名無しさん
19/03/14 20:14:25.92 vvVzV1YI.net
>>676 どこにそんな決まりがあるの?
普通 ver.1 が出て、その後ver.1.0 が出れば、ver.1.0 の方が新しいのは明らかだろ。
総称として、ver.1という場合もあるが、その場合はver.1.9も含まれる。
700:デフォルトの名無しさん
19/03/14 20:14:59.41 ko69m/9G.net
見つけた
RPM::VersionSort - RPM version sorting algorithm, in perl XS - metacpan.org
URLリンク(metacpan.org)
701:デフォルトの名無しさん
19/03/14 20:16:24.45 vvVzV1YI.net
とにかくバージョン番号が異なれば別のバージョンとみなすのが普通だろ。
同じと思う方がおかしい。
702:デフォルトの名無しさん
19/03/14 20:16:49.16 0tbf1s3D.net
お題:“木”という漢字を使って以下のようなフラクタル図形を描け
n=0
木
n=1
-木
木木
n=2
---木
--木木
-木--木
木木木木
n=3
-------木
------木木
-----木--木
----木木木木
---木------木
--木木----木木
-木--木--木--木
木木木木木木木木
※ハイフンはスペースだと思ってください
703:さまよえる蟻人間
19/03/14 20:26:23.57 1+g2CCuw.net
>>683
Win32の固定幅のバージョン情報では4つの整数をドットで区切ったものを使用する。VerInstallFile関数はバージョン番号を比較する。0.0と0.0.0.0が違うバージョンだとアウトだ。
704:デフォルトの名無しさん
19/03/14 20:45:22.76 vvVzV1YI.net
>>687 そんなローカルールなんて知るかよ。 もしそういう意図なら問題を訂正しろよ。 いちいち誰かのいちゃもんに付き合ってる暇はない。
705:デフォルトの名無しさん
19/03/14 20:52:19.11 YiVNNcx0.net
>>665 の修正
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));
//いいかげん結果省略
706:デフォルトの名無しさん
19/03/14 22:10:39.99 8oAE3RnG.net
>>688
例に0.0.0と0.0が等しいって書いてあるんだが
707:デフォルトの名無しさん
19/03/14 23:16:14.88 3EvgP48J.net
>>688
> いちいち誰かのいちゃもんに付き合ってる暇はない。
ならスルーしろよ
お前の頓珍漢な解釈なんて要らんし
708:デフォルトの名無しさん
19/03/14 23:41:35.78 nI5lwjDU.net
>>658 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 "
709:デフォルトの名無しさん
19/03/15 00:00:24.31 27sSd34q.net
>>658 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
710:デフォルトの名無しさん
19/03/15 00:10:49.43 27sSd34q.net
>>678 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、いいな…
711:
19/03/15 00:29:52.08 LCz/5Veu.net
>>680
>1回の分岐で決めろ!
URLリンク(ideone.com)
は題意を満たしていますか?
712:デフォルトの名無しさん
19/03/15 00:45:04.99 GUP5tEyB.net
2回分岐してるように見えるが
713:デフォルトの名無しさん
19/03/15 00:50:01.20 ltf0XXfV.net
>>671 I
行単位で昇順にソートする場合
exit
"hello world" println
文字単位のソートの場合は難しそう。
714:デフォルトの名無しさん
19/03/15 00:52:36.60 J+j6Qj2a.net
>>680 Java
URLリンク(ideone.com)
0回じゃお題満たしてないからだめです?
715:デフォルトの名無しさん
19/03/15 01:15:34.20 T0clmjRI.net
>>678 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) "
716:デフォルトの名無しさん
19/03/15 01:34:55.02 4EriVrie.net
>>686 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. "=>
'---木
--木木
-木--木
木木木木' "
717:デフォルトの名無しさん
19/03/15 01:51:53.98 Fj/79Ht+.net
>>678 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]
718:デフォルトの名無しさん
19/03/15 08:40:18.32 VdqhZ9XO.net
>>678 Common Lisp
URLリンク(ideone.com)
719:デフォルトの名無しさん
19/03/15 10:29:40.47 4uXCwYPV.net
>>701
よく考えたら配列で出力する必要もなかった
console.log(...take(10)(fibo));
結果:
0 1 1 2 3 5 8 13 21 34
720:デフォルトの名無しさん
19/03/15 10:50:31.62 ltf0XXfV.net
>>671 Lua
a=ture
a=a or print("hello world")
721:デフォルトの名無しさん
19/03/15 10:54:07.06 EVqxIhVf.net
>>678
Haskell
main = (print.take 10) fibs
where fibs = 0:1:zipWith (+) fibs (tail fibs)
722:デフォルトの名無しさん
19/03/15 11:30:37.72 gesJPCRi.net
>>675 訂正 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
723:デフォルトの名無しさん
19/03/15 12:06:15.98 phFelL6J.net
>>671
「ソートすると」ではなく「ソートしてからその出力を実行またはコンパイルして実行すると」なのでは?
724:デフォルトの名無しさん
19/03/15 13:00:31.13 1zMWa3GW.net
>>707
せやで
725:デフォルトの名無しさん
19/03/15 13:38:24.99 CRw2aIHX.net
そーっとしておこう
726:デフォルトの名無しさん
19/03/15 15:16:52.97 1zMWa3GW.net
お題: プログラムのコードの文字を縦読みしたコードが実行可能なコード
727:デフォルトの名無しさん
19/03/15 17:37:30.24 g4S7Lu9n.net
お題
2桁16進数化したものをつなげた形でIPアドレスが与えられる。(例:192.168.0.1 -> C0A80001)
与えられたIPアドレスからホスト名を逆引きせよ。
例
08080808 -> google-public-dns-a.google.com
9da6e21a -> www.cnn.com
728:デフォルトの名無しさん
19/03/15 18:51:48.50 phFelL6J.net
>>711
Perl5
URLリンク(paiza.io)
729:673
19/03/15 19:08:00.81 3zDqFokC.net
>>678 java
URLリンク(ideone.com)
>>678 c
URLリンク(ideone.com)
730:デフォルトの名無しさん
19/03/15 19:13:09.78 4uXCwYPV.net
>>711 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' ]
731:デフォルトの名無しさん
19/03/16 01:04:28.66 moiau3OK.net
>>693 もっと簡潔に書けるんだった…
>>658 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
732:デフォルトの名無しさん
19/03/16 02:33:36.77 ksQagb59.net
>>658
Kotlin
URLリンク(paiza.io)
733:デフォルトの名無しさん
19/03/16 06:51:03.68 x9tnPyz1.net
>>671
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]
734:デフォルトの名無しさん
19/03/16 14:50:17.74 0dLFyPZP.net
>>686 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
---木---
--木木--
-木--木-
木木木木
注) 正直者には、-はスペースに見えます。
735:デフォルトの名無しさん
19/03/16 16:51:50.43 EVMD7h0V.net
お題: プログラム言語をなにも知らない人にもプログラムの意味が理解できるコメント無しのhello worldを出力するコプログラム
736:デフォルトの名無しさん
19/03/16 17:11:38.87 0dLFyPZP.net
わかりません><
737:デフォルトの名無しさん
19/03/16 17:16:48.87 EVMD7h0V.net
お題: 文字列に丁度いい具合にグリッチを入れて超かっこいい文字列を作るプログラム
738:さまよえる蟻人間
19/03/16 17:18:04.51 PQISp+Pa.net
グリッチは広辞苑には載っていません。説明して下さい。
739:デフォルトの名無しさん
19/03/16 17:21:14.90 EVMD7h0V.net
>>722
いやです
740:デフォルトの名無しさん
19/03/16 17:36:13.64 0dLFyPZP.net
>>721 perl5
URLリンク(perl-users.jp)
741:デフォルトの名無しさん
19/03/16 20:05:38.53 INaBYg0f.net
グリッチってアレでしょ?
あの、整いました!ってやつ。
最近みないな。
URLリンク(glitch.com)
742:707
19/03/17 01:26:35.49 5dC2feuc.net
>>711
Kotlin
URLリンク(paiza.io)
何故か 9da6e21a の方はホスト名になってくれず IP アドレスの文字列になる。
743:707
19/03/17 02:33:00.06 5dC2feuc.net
>>711
C
URLリンク(paiza.io)
gethostbyname() や gethostbyaddr() ではなく getnameinfo() 使ってみました。
744:デフォルトの名無しさん
19/03/17 06:18:59.33 k04EM+xl.net
2桁までの足し算の筆算を表示せよ。
例:
29
+15
----
14
3
----
44
29
+ 5
----
14
2
----
34
745:デフォルトの名無しさん
19/03/17 06:20:05.97 5dC2feuc.net
>>686
Kotlin
URLリンク(paiza.io)
746:デフォルトの名無しさん
19/03/17 07:23:54.75 1ggb6IGK.net
お題
実数a,b (0<a<b)が与えられたとき、平面座標(a,b),(0,0),(a,-b)の3点を通る円の半径を求める。
747:デフォルトの名無しさん
19/03/17 07:27:24.80 vfP8HMqf.net
余弦定理と正弦定理1回ずつ使うだけだな
748:デフォルトの名無しさん
19/03/17 07:31:01.10 OwOB9RAr.net
数学で解けてもコードに落とせない人っているよね
749:デフォルトの名無しさん
19/03/17 08:41:45.83 k04EM+xl.net
>>732
居るけど、そういう人って機械自体が苦手な人。
機械と数学に強くてコードに落とせない人には会ったことがない。
機械には強いけど数学苦手だからコードに落とせないって人は(自分含め)沢山いるが。
750:デフォルトの名無しさん
19/03/17 12:19:22.82 gm8A83sV.net
自転車修理屋さんが機械に強いけどコードなんて、かけなさそう
751:デフォルトの名無しさん
19/03/17 12:38:59.54 TUY5K+QC.net
>>728 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
752:デフォルトの名無しさん
19/03/17 12:40:50.32 TUY5K+QC.net
>>735 の実行結果
~ $ perl 13_723.pl
29
+15
---
3
14
---
44
29
+5
---
2
14
---
34
せっかくのスペース調整が詰まっちゃって残念なのでアンカーでポップアップして見てね
>>736
753:デフォルトの名無しさん
19/03/17 12:41:06.87 PfKDQB+U.net
>>730 C++
URLリンク(ideone.com)
754:デフォルトの名無しさん
19/03/17 13:19:09.72 k04EM+xl.net
>>728
掛け算に対応したり、1桁どうしの計算用フォーマット作ったりしてたら規模がでかくなった(・ω・`)
1
* 2
-----
2
10
* 0
-----
0
Haskell
URLリンク(ideone.com)
755:デフォルトの名無しさん
19/03/17 13:39:28.89 yIqzgq0g.net
>>686 Common Lisp
URLリンク(ideone.com)
756:デフォルトの名無しさん
19/03/17 18:42:43.38 7j/Zhhp5.net
>>728 ネタ回答: WolframAlpha API / node
// index.js
const {get} = require('http');
const appid = '<<YOUR WolframAlpha APP ID>>';
process.stdin.on('data', data => {
get(`URLリンク(api.wolframalpha.com)(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
URLリンク(i.imgur.com)
$ echo 29+5 | node . > ./test2.gif
URLリンク(i.imgur.com)
$ echo 29*15 | node . > ./test3.gif
URLリンク(i.imgur.com)
試しに一桁×一桁やってみたらなんだか微妙な計算過程に…
$ echo 5*5 | node . > ./test.gif
URLリンク(i.imgur.com)
あと割り算はAPIからでは計算過程のURL取れなかった
757:デフォルトの名無しさん
19/03/17 19:54:31.54 k04EM+xl.net
>>740
こうやって足し算の筆算とは言え、人間の思考過程をプログラムで再現してみると小学生から結構複雑な処理してるんだなと思う。
もっと人間の処理に近づけるなら文字列として認識して、1桁目を数字に変換して~みたいになるんだろうけど。
758:デフォルトの名無しさん
19/03/17 22:48:25.97 t+AGMGYK.net
>>494
(CSVはコンマ区切りの値だよ)
759:デフォルトの名無しさん
19/03/17 23:32:46.95 wEirTeMQ.net
>>742
カンマを逆から読むとマンコですよ
760:デフォルトの名無しさん
19/03/17 23:33:11.60 wEirTeMQ.net
致命的なミスを犯しました
761:デフォルトの名無しさん
19/03/17 23:35:38.92 QL30OvU4.net
許さないからな
762:デフォルトの名無しさん
19/03/18 00:38:16.94 9+FFV4Nx.net
>>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
763:デフォルトの名無しさん
19/03/18 01:13:14.07 4b49AUHf.net
>>743
マンコ・カパックは、インカ神話によるクスコ王国の初代国王である。
764:デフォルトの名無しさん
19/03/21 03:20:09.08 ZuEvTwkR.net
>>728
Kotlin
URLリンク(paiza.io)
765:デフォルトの名無しさん
19/03/21 05:20:06.50 ZuEvTwkR.net
>>680
Kotlin
URLリンク(paiza.io)
リストの中の最小値をループして探し出しように作っただけなんだけど、こんなんで良いのか?
(MutableListなのでsort()しちゃうという手抜きワザもあったがそれだと表面上分岐が一つもない状態になるので止めた)。
766:デフォルトの名無しさん
19/03/21 11:30:55.91 4Lv8Ku6J.net
>>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) "
767:デフォルトの名無しさん
19/03/21 13:37:55.15 p+hkSRzH.net
お題
長方形の盤で左上から上下左右に一マスずつ移動して全てのマスを
辿る。
移動の順番を表した数字を向きと終点を表す文字(↑↓←→★、
上下左右終、UDLRG、^V<>Gなど)に変換する。
入力
1 4 5 6
2 3 8 7
15 14 9 10
16 13 12 11
出力
↓→→↓
→↑↓←
↓←→↓
★↑←←
768:デフォルトの名無しさん
19/03/21 14:37:03.32 Krn8F3T2.net
>>751 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
↓ → → ↓
→ ↑ ↓ ←
↓ ← → ↓
★ ↑ ← ←
769:デフォルトの名無しさん
19/03/21 22:33:42.92 4Lv8Ku6J.net
>>728 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 padd
770:ingStartWith: $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' "
771:デフォルトの名無しさん
19/03/22 05:04:29.93 NMDgNTgg.net
>>751
Kotlin
URLリンク(paiza.io)
772:デフォルトの名無しさん
19/03/22 12:12:43.26 bmKj2SZK.net
>>751 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'
"=>
'↓→→↓
→↑↓←
↓←→↓
★↑←←' "
773:デフォルトの名無しさん
19/03/22 20:50:59.33 KB/r9SyN.net
>>751 octave
URLリンク(ideone.com)
774:デフォルトの名無しさん
19/03/22 21:14:53.89 97922Y7I.net
まだ見にくいなあ。線を繋いで矢印を入れることはできないかな。
775:デフォルトの名無しさん
19/03/22 21:41:47.96 nZ/OoXFx.net
罫線
│┌─┐
└┘┌┘
┌┐└┐
★└─┘
直線部に矢印
│┌→┐
└┘┌┘
┌┐└┐
★└←┘
こんな感じ?
776:デフォルトの名無しさん
19/03/22 21:43:03.63 nZ/OoXFx.net
スタート部も矢印に出来るやん…
↓┌→┐
└┘┌┘
┌┐└┐
★└←┘
777:747
19/03/22 23:30:54.68 DMg7GUli.net
code、プリーズ
778:デフォルトの名無しさん
19/03/23 01:24:21.91 Bvojjkpo.net
>>759
Kotlin
URLリンク(paiza.io)
>>754 を改造して作った。
779:デフォルトの名無しさん
19/03/23 01:27:24.77 Bvojjkpo.net
罫線や矢印が半角で★が全角で表示されてしまうとずれるな。
ま、しょうがないか。
780:デフォルトの名無しさん
19/03/23 02:35:34.66 FcxASXew.net
>>751 Common Lisp
URLリンク(ideone.com)
781:デフォルトの名無しさん
19/03/23 05:47:57.62 ZlGSstH0.net
>>759 Squeak Smalltalk
| fn |
fn := [:str |
| map range signs sign goal position from next atEnd |
map := str lines collect: [:line | line subStrings collect: #asInteger].
range := 1@1 extent: map first size @ map size.
goal := #★. signs := #(┌ ┌ ← → └ └ ┐ ┐ ↑ ↓ ┘ ┘) readStream.
sign := Dictionary new.
0 asPoint fourNeighbors combinations: 2 atATimeDo: [:combi |
sign at: combi copy put: signs next; at: combi reversed put: signs next].
position := 1@1. from := nil. next := 2. atEnd := false.
[atEnd] whileFalse: [
| found delta |
found := position fourNeighbors detect: [:neighPos |
(range containsPoint: neighPos) and: [((map at: neighPos y) at: neighPos x) = next]
] ifNone: [atEnd := true. Float nan].
delta := found - position.
(map at: position y) at: position x put: (sign at: {from ifNil: [delta negated]. delta} ifAbsent: goal).
position := found. from := delta negated. 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' .
"=>
'↓┌→┐
└┘┌┘
┌┐└┐
★└←┘' "
782:デフォルトの名無しさん
19/03/23 06:18:42.67 ZlGSstH0.net
>>764 758の入力例を拝借
fn value: '1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9'.
"=>
'→→→→┐
┌→→┐↓
↑┌★↓↓
↑└←┘↓
└←←←┘' "
fn value: '1 4 5 8 9 12
2 3 6 7 10 11'.
"=>
'↓┌┐┌┐★
└┘└┘└┘' "
fn value: '1 4 5 6
2 3 8 7
16 14 9 10
15 13 12 11' .
"=> 繋げられるところまでで終点にする。
'↓┌→┐
└┘┌┘
16★└┐
15└←┘' "
783:デフォルトの名無しさん
19/03/23 22:17:53.61 4V4ijAbJ.net
S : Start
E : End
X : 行けない所
で、表す方がよいかも
784:デフォルトの名無しさん
19/03/23 23:35:50.10 4ExQ31KE.net
縦読み
785:デフォルトの名無しさん
19/03/23 23:49:28.93 5/UQAxw+.net
>>766
セックス!
786:デフォルトの名無しさん
19/03/24 01:17:54.50 TWBa+gHA.net
>>751 C
URLリンク(ideone.com)
行けないところがある場合■で表示した
787:デフォルトの名無しさん
19/03/24 13:31:32.22 Vlgf6sT0.net
お題 :次のようなジョブパラメータで表されるジョブ(製造工程)があります。全て完成するための最小時間とマシンスケジュールを求めてください。貧乏なので同じ番号のマシンは一台しかありません。{A, B}とあれば;Aマシン番号、B:所要時間
int job_param[JOBNUM][STP][2] = {
{{3, 10}, {4, 10}, {2, 12}, {0, 18}, {1, 4}},
{{1, 11}, {2, 6}, {3, 2}, {4, 8}, {0, 15}},
{{2, 10}, {4, 16}, {3, 2}, {1, 8}, {0, 14}},
{{2, 15}, {1, 12}, {0, 16}, {3, 6}, {4, 17}},
{{4, 14}, {0, 2}, {1, 15}, {2, 6}, {3, 10}}};
788:デフォルトの名無しさん
19/03/24 13:50:50.08 ynFGlX0q.net
>>770
順序に対する制限とかは?
それとなんで5つに分かれているのか?
全部一塊で25個のマシン番号と所要時間のペアがある状態だと順序の関係で何かまずいのか?
789:デフォルトの名無しさん
19/03/24 13:56:04.93 xOvhcY6B.net
>>771
5つのタスクでそれぞれ5つの工程があるってことだろう
790:デフォルトの名無しさん
19/03/24 14:40:55.72 ynFGlX0q.net
>>772
その辺の制限やルールが書かれていないからどうやれば良いのかが分からない、ということ。
順序も何もかも(マシン番号と所要時間も)入れ替えて構わないなら0~4のマシン全体に所要時間を平均的に
詰め込むだけになると思うが、わざわざジョブとか分けてるんだからどうやらそうではなさそうだよな。
どうやら順序や入れ替えには制限があるように見える。しかしその制限が書かれていない。
791:デフォルトの名無しさん
19/03/24 17:03:38.93 Ou399CfX.net
>>770
>>771
>>772
ジョブショップスケジューリング問題です。この問題はジョブや機械が増加すると調べなければならない組み合わせが爆発的に増加してしまうため、現実的な時間で最適解を求めることが難しいとされています(NP困難として知られています)。
マシンを配列順に使用することで1つの製品ができます。
私の実験では10分ぐらい待っても95で終わりませんでした。
792:デフォルトの名無しさん
19/03/24 17:35:40.10 Ou399CfX.net
>>774
途中結果
Solution 4
COST_TIME: 95
0 : ( 3, 0, 10), ( 4, 15, 25), ( 2, 27, 39), ( 0, 46, 64), ( 1, 65, 69)
1 : ( 1, 0, 11), ( 2, 40, 46), ( 3, 54, 56), ( 4, 57, 65), ( 0, 80, 95)
2 : ( 2, 16, 26), ( 4, 27, 43), ( 3, 44, 46), ( 1, 47, 55), ( 0, 65, 79)
3 : ( 2, 0, 15), ( 1, 16, 28), ( 0, 29, 45), ( 3, 47, 53), ( 4, 66, 83)
4 : ( 4, 0, 14), ( 0, 15, 17), ( 1, 29, 44), ( 2, 47, 53), ( 3, 57, 67)
MACHIN Schedule
0 : (46, 64), (80, 95), (65, 79), (29, 45), (15, 17)
1 : (65, 69), ( 0, 11), (47, 55), (16, 28), (29, 44)
2 : (27, 39), (40, 46), (16, 26), ( 0, 15), (47, 53)
3 : ( 0, 10), (54, 56), (44, 46), (47, 53), (57, 67)
4 : (15, 25), (57, 65), (27, 43), (66, 83), ( 0, 14)
793:デフォルトの名無しさん
19/03/24 20:02:05.47 TWBa+gHA.net
>>775
URLリンク(imgur.com)
手動で調べたら90時間(単位は適当)まで縮んだ。最小時間か知らんが。
こういうのガントチャートっていうんだな
794:デフォルトの名無しさん
19/03/24 22:58:01.17 3fqiTHWE.net
ちなみに、
>>751
の問題で、行列の周りに、番兵を作って、処理した人はいる?
漏れは、いつもこの手の問題では、番兵で周りを囲む
795:デフォルトの名無しさん
19/03/25 12:18:06.31 7aW5s/71.net
……プログラミングやっててガントチャートしらないヤツもいるのか
勉強になった
796:デフォルトの名無しさん
19/03/25 12:23:06.98 T0osdeZX.net
名前知らなかっただけでは?
797:デフォルトの名無しさん
19/03/25 12:26:24.36 VWPF1Bqz.net
ロシア国防省「東アジアの地震の多い某国は数十年にわたり、地震を偽装した地下核実験を繰り返して�
798:「る」 https://rosie.5ch.net/test/read.cgi/liveplus/1550888671/l50 自衛隊の中に熊本人工地震を発生させた連中がいることは震源地が自衛隊駐屯地地下であることから自明。 http://open.mixi.jp/user/38378433/diary/1953066799 そればかりか、いま熊本の地下から出ている放射線量が「謎の赤丸急上昇中」だというのだ。 https://quasimoto2.exblog.jp/22729487/ 今、自民党政権が、原発再稼働を進めている本当の理由は、核武装計画だけである。 経済的にとっくに破綻した原子力発電など、最初から眼中にないのだ。 東海アマブログentry-688.html
799:デフォルトの名無しさん
19/03/25 14:02:28.57 FL0Sj0Av.net
いちいちガントチャートなんて銘打たんしな
進捗管理するときには普通に使うもんだ
800:デフォルトの名無しさん
19/03/25 14:57:20.21 T0osdeZX.net
みんな名前知らないけど気づいたら作ってるようなものじゃないか?
801:デフォルトの名無しさん
19/03/25 21:13:29.59 wbp6GG9F.net
ナップザック問題の一種じゃないの?
802:デフォルトの名無しさん
19/03/26 00:12:39.41 xyG5xdoY.net
お題1: 整数値に対して K, M, G 等の単位を付けて人間に読みやすく文字列に変換して出力する。(ls -lh の時の容量の出力と同じで良い)。2^10 = K, 2^20 = M, 2^30 = G とする。
小数点以下を何桁にするかはご自由に。但しあまりあり過ぎると人間には分かり辛いので1桁か2桁が望ましい。
お題2: お題1の逆変換。但し欠落した下位桁があったとしても考慮しなくて良い。
お題3: お題1, お題2 の10^3 = K, 10^6 = M, 10^9 = G 版。
回答のプログラムはまとめた形でも良い。例えばお題1を処理する関数のオプションとして0を与えると2^10単位、1を与えると10^3単位にするなど。
また、K, M, G よりも上の単位ができても良い。
803:デフォルトの名無しさん
19/03/26 03:32:10.56 xI3rzKRA.net
いまどき容量系の接頭辞はKi, Mi, Gi使えや
804:デフォルトの名無しさん
19/03/26 03:42:21.20 xyG5xdoY.net
>>785
そうしたければそうしてもいいよ。
805:デフォルトの名無しさん
19/03/26 13:05:28.20 8ujFPLE9.net
お題1と3まとめてswitch-case文って
筋悪いですかねえ
あるいはお題1とお題2をまとめて、enum型でINVERSEとか作るとか、あるいは TRUE / FALSE で分岐とか
806:デフォルトの名無しさん
19/03/26 19:22:41.61 NbUyZWCM.net
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 95286
URLリンク(you-can-program.hatenablog.jp)
807:デフォルトの名無しさん
19/03/27 00:34:27.07 KJlt8YQv.net
>>784 c
URLリンク(ideone.com)
・十分に小さい値のときしか動かない
・大きい値を与えたときの挙動もケアされない
808:デフォルトの名無しさん
19/03/27 23:48:37.99 oM4knkxt.net
>>784
Kotlin
URLリンク(paiza.io)
Long 型使って正の整数しか考慮してないので63bitまで。
809:さまよえる蟻人間
19/03/28 00:18:20.27 JS1PpMcc.net
Windows付属のshlwapi.dllにStrFormatByteSizeという関数があるようだね。
810:デフォルトの名無しさん
19/03/28 17:17:39.60 vvqhH31/.net
>>770
乱数使ったプログラム書いてみたけど動かした瞬間90まで行くけど
そこから何分待っても動かなさそう
811:デフォルトの名無しさん
19/03/30 20:23:23.36 ghZBhzgh.net
お題
表示画面におさまる最大の正三角形を描画する
812:デフォルトの名無しさん
19/03/30 23:07:23.94 DyxzEuK/.net
つまらん次
813:デフォルトの名無しさん
19/03/31 08:20:57.83 JrOSOdLx.net
>>793
最大の定義ぐらい書けよ…
814:デフォルトの名無しさん
19/03/31 13:16:21.13 m8dr8/PB.net
>>795
「たとえば表示画面が640x400なら、一辺が400の正三角形を描画する」ことではないのか
貴殿が想定する「最大の定義」とやらを示してもらえんかの?
815:デフォルトの名無しさん
19/03/31 13:25:41.80 +5DxT57L.net
ん?
その場合、一辺は400*2/sqrt(3)になるんじゃない?
816:デフォルトの名無しさん
19/03/31 13:28:01.88 EfWeZY5f.net
>>796
高さ400の正三角形だと一辺461.88じゃね?
817:デフォルトの名無しさん
19/03/31 15:30:18.52 uX30LzG9.net
怒涛のツッコミw
818:デフォルトの名無しさん
19/03/31 19:30:51.59 KJRyWF55.net
コンソール画面なら、画面の横幅と縦幅を取得しなきゃならんから言語によってはめんどくさいだろうな
標準でcurses使える言語ってなにがあるかな
819:デフォルトの名無しさん
19/03/31 20:25:37.50 P4y0w1jO.net
表示画面が球体だったら…
820:デフォルトの名無しさん
19/04/01 00:15:16.48 ucc1UNjR.net
リーマン幾何の多様体上で計算しとけ
なお、サラリーマンのリーンマン じゃないからな。
821:デフォルトの名無しさん
19/04/01 01:51:36.50 //wZRuJn.net
でしゃばんな
822:デフォルトの名無しさん
19/04/01 03:15:46.62 Mx+j7LaB.net
Windows環境だとdirectx叩くことになるのかな
VT100とかXとかは全く知らないけど DisplayWidth とか DisplayHeight とか使うのか
あるいは何らかのクラスのメンバー関数を呼ぶのか
823:デフォルトの名無しさん
19/04/01 03:16:52.56 Mx+j7LaB.net
>>800
pdcursesがあるじゃないか(あらゆる環境で使えるとは言ってない
824:デフォルトの名無しさん
19/04/15 22:24:58.61 pFhU6MbP.net
エスケープシーケンスで座標指定とか文字色変更って、今はできないんだっけ?
825:デフォルトの名無しさん
19/04/15 23:06:48.83 1nT5zSFt.net
エスケープシーケンス powershell
で、ググってみ
826:デフォルトの名無しさん
19/04/16 09:06:19.32 wCqxjGzR.net
>>806
文字を出す端末による。
WindowsだったとしてもWSLでUbuntu動かした時のbashの端末では使えてるので多分設定次第なんだろうな。
逆に言うと設定によっては意図した通りに動かない。
827:デフォルトの名無しさん
19/04/16 16:33:57.42 wCqxjGzR.net
お題
アミダくじの作成、表示、及び余力があれば実行
・縦線の本数と横線の最大本数は入力できるようにする。
・左右の縦線への横線だけでなく飛び越えて他の縦線へ移動する横線もオプションで作れるようにする。
・表示方法は罫線キャラクタを使っても良いがGUI等他の方法でも良い。
・実行時はアニメーションでも良いし、いきなり結果が出るだけでも良い。
・面倒なら作成して表示するだけで実行しなくても良い。
828:デフォルトの名無しさん
19/04/16 16:45:06.33 GDkTCt4E.net
N88-BASIC(86)で出来そうな気がするが
829:デフォルトの名無しさん
19/04/16 17:51:22.60 wCqxjGzR.net
・PC-8001で動作すること。
いや、動かんでもいい。
830:デフォルトの名無しさん
19/04/16 18:37:53.31 GDkTCt4E.net
PRINT CHR$(12)
831:デフォルトの名無しさん
19/04/16 18:38:10.10 GDkTCt4E.net
CONSOLE 80,25,0,1
だっけ
832:デフォルトの名無しさん
19/04/16 18:40:11.47 GDkTCt4E.net
10 WIDTH 80,25
からか…
833:デフォルトの名無しさん
19/04/16 18:46:35.84 GDkTCt4E.net
DEFINTA-Z:PRINT"HOW MANY COLUMNS":INPUTA:A0=160/A
834:デフォルトの名無しさん
19/04/18 19:26:49.12 pJc8eu0c.net
お題:要素数が同じふたつの数値配列を受け取り、要素ごとに足した配列を返す。
中級:同様に、三つの配列を受け取る。
上級:同様に、三つの配列を受け取り、掛けて割ったもの返す。
ocaml
URLリンク(ideone.com)
octave
URLリンク(ideone.com)
835:デフォルトの名無しさん
19/04/18 21:28:55.51 47ewAOC/.net
簡単過ぎる、次
836:デフォルトの名無しさん
19/04/18 23:26:27.73 izaVyiw1.net
>>816 Squeak/Pharo Smalltalk
#(1 2 3) + #(4 5 6). "=> #(5 7 9) "
#((1 2 3) (4 5 6) (7 8 9)) sum. "=> #(12 15 18) "
#(1 2 3) * #(4 5 6) / #(7 8 9). "=> {(4/7) . (5/4) . 2} "
837:デフォルトの名無しさん
19/04/19 00:02:01.58 ODUYGH1G.net
お題そのものは簡単でも、マイナー言語での解き方を見るのは面白いね
838:デフォルトの名無しさん
19/04/19 00:09:49.99 fWzUUJvd.net
自演乙
839:デフォルトの名無しさん
19/04/19 07:15:46.60 TxABBsFf.net
>>816
main = do
print $ zipWith (+) [1,2,3] [4,5,6]
print $ zipWith3 (\a b c -> a + b + c) [1,2,3] [4,5,6] [7,8,9]
print $ zipWith3 (\a b c -> a * b / c) [1,2,3] [4,5,6] [7,8,9]
Out:
[5,7,9]
[12,15,18]
[0.571428571428571,1.25,2.0]
840:デフォルトの名無しさん
19/04/19 08:40:44.50 TxABBsFf.net
>>818
Haskellでは%記号が分数を表すので、Data.Ratioをインポートして
import Data.Ratio
main = do
print $ zipWith (+) [1,2,3] [4,5,6]
print $ zipWith3 (\a b c -> a + b + c) [1,2,3] [4,5,6] [7,8,9]
print $ zipWith3 (\a b c -> a * b % c) [1,2,3] [4,5,6] [7,8,9]
Out:
[5,7,9]
[12,15,18]
[4 % 7,5 % 4,2 % 1]
841:デフォルトの名無しさん
19/04/20 12:21:00.80 R45IcBKG.net
お題:円の中心の座標と、円の半径の2乗が与えられる。
この円の円周上にある格子点の数を求めよ。
(X座標 Y座標 半径の2乗)
9/22 5/22 138125/242 => 7
7/38 5/38 785817263725/722 => 77
17/38 13/38 13603053979519731025/722 => 777
9/38 6/38 23959256988683736880737131790625/1444 => ?
12/38 7/38 23959256988683736880737131790625/1444 => ?
15/38 14/38 23959256988683736880737131790625/1444 => ?
842:デフォルトの名無しさん
19/04/20 18:57:22.37 4zW2+iPl.net
また数学か・・・
843:デフォルトの名無しさん
19/04/20 19:51:50.54 JrfgKJuX.net
しょっちゅう出てくるけどこれ宿題か?
844:デフォルトの名無しさん
19/04/20 23:55:49.29 R45IcBKG.net
宿題じゃないんやけどなー
12/38 7/38 23959256988683736880737131790625/1444 => ? の答えと円周上の格子点一覧…俺が間違えてなければ
URLリンク(pastebin.com)
845:デフォルトの名無しさん
19/04/21 00:12:56.57 E83GoNC+.net
コードを出せコードを!
846:デフォルトの名無しさん
19/04/21 01:28:16.84 TAIIcaTj.net
プログラムでの解き方が思い付かないわ
円の方程式に整数代入して満たすかみればいいのか?
847:デフォルトの名無しさん
19/04/21 02:14:46.56 H/Se0iAi.net
解法を考えるのも回答能力のうちだからね
今の時代、参照・検索も当然 可だけれど
848:デフォルトの名無しさん
19/04/21 06:09:56.50 /+hkU7cH.net
>>822
割り算が%とか、そのモジュール書いた奴、頭腐ってんじゃないの?
849:デフォルトの名無しさん
19/04/21 13:14:42.53 ay9waDdy.net
>>830
?
>>821 見てないの?
Haskellでは少数を返す割り算は「/」、整数を返す割り算は「`div`」と返す型で使い分ける。
「%」が返すのは分数型(Rational)
850:デフォルトの名無しさん
19/04/21 14:45:56.49 /+hkU7cH.net
やっぱ頭腐ってるな。
851:デフォルトの名無しさん
19/04/24 20:43:26.25 NALZs80Z.net
お題: 日本語の文章の句読点を , や . に置き換える。
ただし、, や . の直後には半角のスペースを置き、さらに改行の手前や文末のスペースは削除すること。
例:
In < これは、日本語の文章です。ふひひ。
Out > これは, 日本語の文章です. ふひひ.
852:デフォルトの名無しさん
19/04/24 20:50:03.68 WcGowxU3.net
しょうもな
853:デフォルトの名無しさん
19/04/24 20:51:59.82 Y8OSWYHv.net
文末のスペースが消えてないやん
どっちやねん
854:デフォルトの名無しさん
19/04/24 20:52:14.50 NALZs80Z.net
お題: 簡易なテーブルを綺麗に整形する
余力があればカラムの左揃え、右揃えをオプションで選択できるようにする(出力は中央揃え)
入力:
a|aaaaa|bb
ccc|ddd|ee
出力:
**a***|*aaaaa*|***bb*
------+-------+------
*ccc**|**ddd**|***ee*
855:デフォルトの名無しさん
19/04/24 20:54:35.53 NALZs80Z.net
>>836
×(出力は中央揃え)
〇(例は中央揃え)
856:デフォルトの名無しさん
19/04/24 21:01:38.43 Y8OSWYHv.net
bとeが中央じゃなくね
857:デフォルトの名無しさん
19/04/24 21:05:36.09 NALZs80Z.net
>>838
例に使ったスクリプトがバグってた
858:デフォルトの名無しさん
19/04/24 22:36:14.15 lwqMqFKi.net
左のaとcもおかしい
859:デフォルトの名無しさん
19/04/24 23:50:33.64 NSCbK96M.net
各列の文字数は一致する必要があるのか
860:デフォルトの名無しさん
19/04/25 04:26:28.66 D6NtakiX.net
>>836
入出力のエンコードは?
ASCII以外はあるのか?
861:デフォルトの名無しさん
19/04/25 05:01:51.18 XVamjpPA.net
>>842
ASCIIのみで
862:デフォルトの名無しさん
19/04/25 07:44:22.82 XVamjpPA.net
>>839
いやバグってなかったわ
>>836
が正常
| の前後に*が一つ入るから
| の前後の*は入れても入れなくてもいいけど入れたほうが綺麗になるかもしれん
863:デフォルトの名無しさん
19/04/25 10:34:23.81 J1W60oTI.net
「綺麗」とか言うお気持ちワードが入るとダメだな
864:デフォルトの名無しさん
19/04/25 10:41:43.51 aGd2Nt87.net
「楽しいプログラミング」w
「美しく書ける」ww