[過去ログ] プログラミングのお題スレ Part13 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
549: 2019/03/08(金)09:23 ID:iTwHpxzE(1)調 AAS
>>547 Squeak Smalltalk
| fn |
fn := [:arr |
| groups |
groups := arr groupBy: #asLowercase having: [:group | group size > 1].
groups values collect: #asArray
].
fn value: #('aB.txt' 'Ab.txt' 'xx' 'cd' 'cD' 'CD').
"=> #(('cd' 'cD' 'CD') ('aB.txt' 'Ab.txt')) "
550: 2019/03/08(金)09:47 ID:pv8HlopZ(1)調 AAS
>>547
それはWindowsとかでは試せないのでは?ディレクトリが違うならできるだろうけど。
(まあWindowsでもWSLでUbuntuとか動かせばできるが)
551(1): 547 2019/03/08(金)11:48 ID:N66/0TP0(2/2)調 AAS
同一フォルダ内での、大文字小文字だけが異なるファイル名は、Windows では作れないけど、
Linux では作れてしまうので、それをチェックする目的です
Linuxでも、こういうファイル名は作らない方がよい
552: 2019/03/08(金)16:35 ID:VhFMuL/G(1)調 AAS
>>551
死ね
553: 2019/03/08(金)17:12 ID:qP6cz7Aj(1/2)調 AAS
時々死ねと言うやついるけど同じやつなのか? いい加減で大人になれ。
554: 2019/03/08(金)18:19 ID:aY8HpC9F(1)調 AAS
イ?
555(1): 2019/03/08(金)18:42 ID:eAQ60MzF(1)調 AAS
お題: 1=2を証明しろ
証明出来ないは無しで
556: 2019/03/08(金)18:49 ID:qP6cz7Aj(2/2)調 AAS
>>555 それは言語によるんじゃないの? 論理的にはあり得ない。
一般的には、0がFalse でそれ以外がTrueと言うだけでは?
557(1): さまよえる蟻人間 ◆T6xkBnTXz7B0 2019/03/08(金)18:58 ID:8R2ZaOuQ(1)調 AAS
整数のオーバーフロー使えば楽に証明できるけど、それはもはや基礎数学の整数じゃないし。
558: 2019/03/08(金)19:14 ID:2owB+W9f(1/3)調 AAS
>>544 octave
https://ideone.com/JoTcaP
559(5): 2019/03/08(金)19:17 ID:ru9qZk5w(1)調 AAS
お題:
N人の人物がある部屋に出入りしています。
i番目の人は時刻a[i]に入室し、時刻b[i]に退室します。(1 <= a[i] < b[i])
すべての人は入退室時に以下の通り行動します。
・入室時に、照明がOFFならば照明をONにする。
・退室時に、室内に自分以外に誰もいなければ照明をOFFにする。
最初は照明がOFFになっていて室内には誰もいません。
複数の人物が同時に入退室することはないものとします。
照明がONになっている時間の合計を求めなさい。
a={1,3,5}
b={2,4,6}
=> 3
a={1,2}
b={5,6}
=> 5
a={100,1,2}
b={105,3,4}
=> 8
560: 2019/03/08(金)20:42 ID:q/o0JPH8(1)調 AAS
>>364
brainf*ck
>++++++++++<+[,.>.<]
561: 2019/03/08(金)20:42 ID:AweN/YnK(1)調 AAS
★ぁりが?ヾ(。・ω・。)ノぁりが?★
562(1): 2019/03/08(金)20:54 ID:2owB+W9f(2/3)調 AAS
>>559 ruby
https://ideone.com/yo3mvc
563: 2019/03/08(金)21:22 ID:QMcItLTV(1)調 AAS
>>559 Common Lisp
https://ideone.com/2hHoAC
564(1): 2019/03/08(金)21:55 ID:2owB+W9f(3/3)調 AAS
>>547 ruby
https://ideone.com/faTKf5
565: 2019/03/09(土)08:53 ID:irV15TzB(1)調 AAS
>>410 J
f =: 3 : 0
> , { ;/(,. toupper) y
)
566: 562 2019/03/09(土)09:29 ID:8CAUa/TL(1)調 AAS
>>559 ruby
すこーしすっきり
f = ->a, b {a.zip(b).map {|c| (c.first...c.last).to_a}.inject(:|).size}
↓
f = ->a, b {a.zip(b).map {|c, d| [*c...d]}.inject(:|).size}
567(2): 547 2019/03/09(土)10:58 ID:GVs3bbIF(1)調 AAS
>>564
たった2行とは、素晴らしい!
JavaScript(JS)とか、関数型プログラミングだね
f(&:upcase), f(&:chomp)
関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ!
漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw
情けない
Ruby 初心者スレッド Part 65
2chスレ:tech
568: 2019/03/09(土)12:51 ID:C6v7oEvs(1/2)調 AAS
クソみてーな恣意的な記号使いはperl譲りだな
569: 2019/03/09(土)13:17 ID:capoU8RA(1)調 AAS
アンダースコア_はprologの時点であるんじゃね
それに記号なら恣意的だろ
570(1): 2019/03/09(土)19:25 ID:hBO8FWAE(1/3)調 AAS
>>544
Haskell
main = mapM_ print $ newxss ++ [zipWith (+) (newxss!!0) (newxss!!1)]
xss = [[1,2,3],[4,5,6]]
newxss = map (\xs -> xs ++ [sum xs]) xss
571(16): 2019/03/09(土)19:49 ID:R3sqYFdd(1)調 AAS
お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する
入力
abc 2
出力
*b*
a*c
572: 2019/03/09(土)19:57 ID:C6v7oEvs(2/2)調 AAS
お題か出力のどっちかが間違っている
日本語勉強した方がいい
573: 2019/03/09(土)19:58 ID:hBO8FWAE(2/3)調 AAS
>>544,570
任意の数の行列だったか。。。
修正
main = mapM_ print $ newxss ++ [lastxs]
xss = [[1,2,3],[4,5,6],[7,8,9]]
newxss = map (\xs -> xs ++ [sum xs]) xss
lastxs = map sum $ retsu newxss
retsu ([]:xs) = []
retsu xss = map head xss:retsu (map tail xss)
574(1): 2019/03/09(土)20:10 ID:0OOZ8KrR(1)調 AAS
>>557
オーバーフローは数学ですらないだろ。こっちは数学。
宇宙を支えていたのは、驚異のたし算だった
私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。
私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。
その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。
http://jbpress.ismedia.jp/mwimgs/4/b/400/img_4b7f33022b840f792a0324a10b89a24d369437.jpg
http://jbpress.ismedia.jp/articles/-/46939
575: さまよえる蟻人間 ◆T6xkBnTXz7B0 [age] 2019/03/09(土)20:18 ID:XY+I2Bbh(1)調 AAS
>>574
応用数学ではオーバーフローも数学の一種。
576: 2019/03/09(土)20:25 ID:hBO8FWAE(3/3)調 AAS
>>364
Haskell
main = mapM_ (\c -> putStrLn $ c:[]) "hello"
577: 2019/03/09(土)20:38 ID:1xJckQ5D(1)調 AAS
>>544
kotlin
https://paiza.io/projects/cL6xIQA--yDFZ1pjndvzAw
Double型でやったら出力に小数点以下が付加されたが値として間違ってるわけではないのでそのままにする。
578: 2019/03/10(日)01:41 ID:5A3UW8N7(1)調 AAS
>>544 Python
import numpy as np
# 何行何列でも良い
ar =[
[1,2,3,4],
[4,5,6,7],
[7,8,9,10]
]
#縦に足して行を追加
r=np.vstack((ar,np.sum(ar,axis=0)))
#横に足して列を追加
ans=np.hstack((r,np.sum(r,axis=1).reshape((-1,1))))
print('ans=\n',ans)
'''
ans=
[[ 1 2 3 4 10]
[ 4 5 6 7 22]
[ 7 8 9 10 34]
[12 15 18 21 66]]
'''
579(1): 2019/03/10(日)03:08 ID:LqrBe0vy(1)調 AAS
>>571 ruby
s = "abc"
n = 2
t = "*" * s.length
t[n - 1] = s[n - 1]
u = s.clone
u[n - 1] = "*"
puts(t, u)
580: 2019/03/10(日)11:57 ID:e6SI07pl(1)調 AAS
>>571 J
f =: 4 : 0
|: ((,. -.) (<:x) = i. # y ) {"1 '*' ,. y
)
2 f 'abc'
*b*
a*c
581(1): 2019/03/10(日)13:31 ID:vqbsu7fW(1/2)調 AAS
>>571
Haskell
main = do
putStrLn $ seclet "abc" (==) 2
putStrLn $ seclet "abc" (/=) 2
seclet lst func num = seclet' lst func 1 num
where
seclet' [] _ _ _ = []
seclet' (x:xs) f n a | f n a = x: seclet' xs f (n + 1) a
seclet' (_:xs) f n a = '*': seclet' xs f (n + 1) a
582: 2019/03/10(日)13:56 ID:vqbsu7fW(2/2)調 AAS
>>571
>>581
引数の順序入れ替えてmapM_ 使って、main部分を一行にまとめた。
main = mapM_ (putStrLn.seclet "abc" 2) [(==),(/=)]
seclet lst num func = seclet' lst 1 num func
where
seclet' [] _ _ _ = []
seclet' (x:xs) n a f | f n a = x: seclet' xs (n + 1) a f
seclet' (_:xs) n a f = '*': seclet' xs (n + 1) a f
583: 2019/03/10(日)17:19 ID:lsf+n+kn(1/2)調 AAS
>>571 Perl5
($s, $n)= qw{abc 2};
@s = split'',$s;
@t = qw{*} x @s;
$n--;
($s[$n], $t[$n]) = ($t[$n], $s[$n]);
print @t, "\n", @s, "\n";
実行結果
~ $ perl 13_571.pl
*b*
a*c
584: 2019/03/10(日)17:47 ID:lsf+n+kn(2/2)調 AAS
>>544 Perl5
@a = ([1, 2, 3,],
[4, 5, 6]);
use List::Util sum;
push @$_, sum(@$_) for @a;
for $i (0..$#{$a[0]}) {
push @b, sum(map{$a[$_][$i]} 0..$#a)
}
print "@$_\n" for @a;
print "@b\n";
実行結果
~ $ perl 13_544.pl
1 2 3 6
4 5 6 15
5 7 9 21
585: 2019/03/10(日)20:48 ID:z5UigTCL(1/2)調 AAS
>>571 octave
https://ideone.com/fEaJMh
586: 2019/03/10(日)21:12 ID:ObNpfzdX(1)調 AAS
ここっておっさんが多いイメージ
587: 2019/03/10(日)21:16 ID:KcIurEvX(1/4)調 AAS
>>559
Java
https://paiza.io/projects/uoq0pfsAO5vRexzfWg1Mdw?language=java
588(1): 2019/03/10(日)21:20 ID:z5UigTCL(2/2)調 AAS
>>571 ruby
https://ideone.com/6NM2Z2
>>567
String#lines ←これの存在知らなかった
勉強になりました
589: 2019/03/10(日)21:46 ID:KcIurEvX(2/4)調 AAS
>>547
Java
https://paiza.io/projects/2ff8V2wS29AjINHLm-bgYw?language=java
590: 2019/03/10(日)21:59 ID:5renFNS0(1)調 AAS
>>571
@Mathematica
https://ideone.com/gDkzl4
591: 567 2019/03/10(日)22:01 ID:bEzyp4mc(1)調 AAS
>>588
余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる!
Rubyは、色々と便利なものを作っている
p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT
#=> ["a", "b"]
592: 2019/03/10(日)22:14 ID:SJp/1k7U(1)調 AAS
>>571 Common Lisp
https://ideone.com/cnTKML
593: 2019/03/10(日)22:19 ID:KcIurEvX(3/4)調 AAS
>>579
Java
https://paiza.io/projects/eCieLwJTqtEDvaYM4uknOA?language=java
594: 2019/03/10(日)22:19 ID:KcIurEvX(4/4)調 AAS
ごめん間違えた
>>571です
595: 2019/03/10(日)23:51 ID:THpHptm5(1)調 AAS
>>571 Node.js
https://ideone.com/l4XmDp
596: 2019/03/11(月)00:57 ID:HrDBQthw(1)調 AAS
>>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' "
597: 2019/03/11(月)01:39 ID:+Nlo5Elt(1/2)調 AAS
>>547
Kotlin
https://paiza.io/projects/fxNs_pgfP7MwmXYp2xQ1YA
598: 2019/03/11(月)02:41 ID:+Nlo5Elt(2/2)調 AAS
>>559
Kotlin
https://paiza.io/projects/rbSY9Q6oTve1ILy1AIIj_g
599: 2019/03/11(月)07:59 ID:hFtMxxmn(1)調 AAS
>>547 Perl5
https://ideone.com/Mbj5Hz
push @{$h{lc $_}}, $_ for <STDIN>;
print "@{$_}" for grep{@$_ > 1} values %h;
600: 2019/03/11(月)09:18 ID:D2PSGRy3(1)調 AAS
>>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**
'''
601(6): 2019/03/11(月)10:48 ID:u4Ymakq9(1/2)調 AAS
お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由
例:
入力: >>>>>vvvvv<<<<^^^^
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v
602(1): 2019/03/11(月)11:00 ID:JmszPBJl(1/2)調 AAS
これって一歩目はなんでもいいよね
603: 2019/03/11(月)11:35 ID:AGCERQh7(1)調 AAS
>>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
604(2): 2019/03/11(月)11:45 ID:+cahZmCl(1/5)調 AAS
>>601
それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?
605(2): 2019/03/11(月)11:48 ID:u4Ymakq9(2/2)調 AAS
>>602
>>604
そういうめんどくさい質問がこないように、
それ以外は自由と付け加えてある
606(1): 2019/03/11(月)13:45 ID:+cahZmCl(2/5)調 AAS
>>605
仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。
607(1): 2019/03/11(月)15:42 ID:7+lrfCi1(1)調 AAS
>>604
そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは?
ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。
608(1): 2019/03/11(月)16:07 ID:5vEtkzIB(1/2)調 AAS
>>605 何でこれ以外の形は許さんと言えないんだ?
自由にどうぞなんて問題じゃ無いだろ。
609(1): 2019/03/11(月)16:18 ID:ZVqwh3rP(1)調 AAS
>>606,608
こいつらホント掃き溜めのゴミだな
610: 2019/03/11(月)16:19 ID:+cahZmCl(3/5)調 AAS
>>571
Kotlin
https://paiza.io/projects/fOvQDvJ6VoTchgVL3pYJpw
611: 2019/03/11(月)16:25 ID:+cahZmCl(4/5)調 AAS
>>607
なるほど。しかしそれならばその事を書いておいて欲しかったな。
>>609
何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?
612: 2019/03/11(月)16:58 ID:PGatxMde(1/2)調 AAS
>>601
出力おかしくねぇ?最初と最後の行は5列だけど
間の行ぜんぶ6列になってるぞ?
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v
こうじゃね?
>>>>>
^***v
^***v
^***v
^***v
<<<<v
613: 2019/03/11(月)17:14 ID:+cahZmCl(5/5)調 AAS
ま、いいや。よくわかんない問題は放っておこう。
614(2): 2019/03/11(月)19:21 ID:PGatxMde(2/2)調 AAS
>>601 javascript
長くなっちった
https://ideone.com/vzncKq
入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv
出力:
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********
615(1): 2019/03/11(月)19:36 ID:/Vx80pKW(1/2)調 AAS
お題
m×nマスのチェス盤を考える。
1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。
ナイトが訪れることのできるマスの個数を求めよ。
m=1, n=1
=> 1
m=3, n=3
=> 8 (真ん中のマスを訪れることができない)
m=4, n=4
=> 16
616: 2019/03/11(月)19:36 ID:DXpwYxNa(1)調 AAS
>>614 説明がないと何をどうやってるのかわけわからん。
先ずは入力と出力をどう解釈して作ったのか?
形にも一貫性があるとは思えないけど。
しかしこんなのがどんどん出てきたら、煩わしいだけ。
617: 2019/03/11(月)20:02 ID:JmszPBJl(2/2)調 AAS
いや、その通りに歩くんだろ
618(1): 2019/03/11(月)20:07 ID:5vEtkzIB(2/2)調 AAS
出題通り以外の回答はやめてほしいな。
それ以外の回答をする場合は、解説文も日本語で書いてくれよ。
不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見ればわかるというのは無し。
619(2): 2019/03/11(月)21:26 ID:ALw/TkKR(1)調 AAS
>>618
ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。
出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。
620(1): 2019/03/11(月)21:31 ID:1OBeL2+Y(1)調 AAS
>>601 Common Lisp, >>614の移植
https://ideone.com/B76Dki
621: 2019/03/11(月)22:12 ID:+V1dboU8(1)調 AAS
>>>v<^^>>
の場合
*^>>
>^>
*<v
622: 2019/03/11(月)22:40 ID:6pdTomDX(1)調 AAS
>>571 octave 複数列指定可能版
https://ideone.com/UqKcNb
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)));
623(7): 2019/03/11(月)23:02 ID:GdRfR4uu(1)調 AAS
以下の整形式の.ini ファイルから、すべての値を取得して、
「セクション名 : キー名 : 値」で表示する
[sec1]
key1=val1
[sec2]
key2=val2
624: 2019/03/11(月)23:51 ID:/Vx80pKW(2/2)調 AAS
>>623 C++
https://ideone.com/V4sf81
625(1): 2019/03/12(火)00:26 ID:XpXqAgCh(1/2)調 AAS
>>623 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
626: 2019/03/12(火)00:37 ID:XpXqAgCh(2/2)調 AAS
>>625 も少し簡潔に書けるんだった…
while (<DATA>) {
$s = $1 if /\[(\w+)\]/;
print "$s:$1:$2\n" if /(\w+)=(\w+)/;
}
__DATA__
[sec1]
key1=val1
[sec2]
key2=val2
627(1): 2019/03/12(火)01:38 ID:nghHbW0D(1)調 AAS
>>623 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
628: 2019/03/12(火)05:56 ID:KPetEW8/(1/4)調 AAS
>>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
629: 2019/03/12(火)17:03 ID:+VdOvnK/(1/2)調 AAS
>>615
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;
}
630: 2019/03/12(火)18:21 ID:MLSq27aG(1)調 AAS
>>623 Io
f := method(s,
s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":"))
)
631: 2019/03/12(火)18:30 ID:M/w6PjEF(1)調 AAS
>>619
出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?
632(3): 2019/03/12(火)19:26 ID:mUEXbKn8(1)調 AAS
お題
数列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
=> ?
633: 2019/03/12(火)20:52 ID:2hm/Dong(1)調 AAS
つまらん
634: 2019/03/12(火)21:03 ID:KPetEW8/(2/4)調 AAS
>>619
>>547に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか?
意図を無視するのは論外だが。
635: 2019/03/12(火)21:07 ID:KPetEW8/(3/4)調 AAS
>>632
マシンパワーがあれば式を入れればいいだけってのはね。。。
解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。
いあ、無茶振りだろうから、どれか2つ満たせればおkだが。
636(2): 2019/03/12(火)21:12 ID:KPetEW8/(4/4)調 AAS
例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。
637(2): 2019/03/12(火)21:43 ID:rf03pH6k(1)調 AAS
>>636
一般的なミューテートするカウンタも使っちゃダメってことかな?
638(2): 623 2019/03/12(火)22:49 ID:oX4bYoPv(1/2)調 AAS
>>623
お題を修正
[ ] = の3つは、特別な記号です。
それらを含まない行は、無視して
[sec1]
key1=val1
[sec2]
key2=val2
x=y
>>627
セクション名・キー名・値は、特定の文字列ではありません!
特別な記号以外の、任意の文字列です
639(1): 2019/03/12(火)23:03 ID:oX4bYoPv(2/2)調 AAS
お題
現行規格の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 で、計算してみて!
640(1): 2019/03/12(火)23:07 ID:+VdOvnK/(2/2)調 AAS
>>632
https://ideone.com/Y4N5oM c++
小さい数値は力技(bf2)で確認してみたが……
641: 2019/03/12(火)23:27 ID:LDiZRGdZ(1)調 AAS
>>601 Common Lisp
>>620のリファクタリング
ついでに * を空白に、開始地点を A、終了地点を Z にしてみた
https://ideone.com/zMHal6
Python
https://pastebin.com/NAGHLtcu
実行結果 https://webmshare.com/Ma3gZ
642: 2019/03/12(火)23:42 ID:2FAQzMGK(1)調 AAS
>>632 C
https://ideone.com/m3vejt
エクセルとかで実際に数列を計算してみると、長さ12(剰余の数-1)以下の周期になるっぽいのでそれで求められる。
普通に計算するとq * a[i] + r はどんどん大きくなるけど、
毎回 (q * a[i] + r) mod 13としても、計算に影響はないようなので、オーバーフローもせずに計算できる。
だたし、数学的に正しいか保証しかねるが。
643(1): 2019/03/13(水)00:12 ID:rGhbMCbu(1)調 AAS
>>640
12 0 11 1
=> 11
というコーナーケースが…
644: 2019/03/13(水)00:29 ID:Eq+ygVqk(1)調 AAS
>>643
確かに、
コメントアウト(bf2)するときに誤ってしまったようだ、
("if(n==0)" だったのだが、いらないなぁ)
どっちにしろ、0や1のテストは、やってない
645(2): 2019/03/13(水)00:51 ID:vPzmbHWs(1/2)調 AAS
>>637
だめ。
そこが関数型言語と手続き型言語の考え方の大きな違いだし。
皮肉にも?それ作った時、入門書の関数より考え方の違いが分かった。
646(1): 2019/03/13(水)00:54 ID:bUFEpZHr(1)調 AAS
>>638
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です
えぇ…
入力:
[あああ]
いいい=ううう
[えええ]
おおお=かかか
出力:
あああ:いいい:ううう
えええ:おおお:かかか
少なくとも任意の文字列には対応してるじゃん。不当指摘だ!
647(1): 2019/03/13(水)01:18 ID:FktqEJYT(1)調 AAS
>>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]]
648: 623 2019/03/13(水)02:39 ID:ZImJqTUY(1)調 AAS
>>646
スマン。漏れの間違い!
key, val などの特定の文字列を置換しているのかと、勘違いしていた
上下前次1-新書関写板覧索設栞歴
あと 354 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s