[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 06/28 06:35 / Filesize : 332 KB / Number-of Response : 1028
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part13



1 名前:デフォルトの名無しさん [2019/02/03(日) 11:21:53.20 ID:72eosYJ+.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
https://mevius.2ch.net/test/read.cgi/tech/1538096947/

570 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:14:26.55 ID:2owB+W9f.net]
>>544 octave
https://ideone.com/JoTcaP

571 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 19:17:05.52 ID:ru9qZk5w.net]
お題:
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

572 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:26.76 ID:q/o0JPH8.net]
>>364
brainf*ck
>++++++++++<+[,.>.<]

573 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:42:27.70 ID:AweN/YnK.net]
★ぁりがdヾ(。・ω・。)ノぁりがd★

574 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 20:54:42.10 ID:2owB+W9f.net]
>>559 ruby
https://ideone.com/yo3mvc

575 名前:デフォルトの名無しさん [2019/03/08(金) 21:22:26.01 ID:QMcItLTV.net]
>>559 Common Lisp
https://ideone.com/2hHoAC

576 名前:デフォルトの名無しさん mailto:sage [2019/03/08(金) 21:55:03.73 ID:2owB+W9f.net]
>>547 ruby
https://ideone.com/faTKf5

577 名前:デフォルトの名無しさん [2019/03/09(土) 08:53:56.42 ID:irV15TzB.net]
>>410 J
f =: 3 : 0
 > , { ;/(,. toupper) y
)

578 名前:562 mailto:sage [2019/03/09(土) 09:29:27.51 ID:8CAUa/TL.net]
>>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}



579 名前:547 mailto:sage [2019/03/09(土) 10:58:09.02 ID:GVs3bbIF.net]
>>564
たった2行とは、素晴らしい!
JavaScript(JS)とか、関数型プログラミングだね

f(&:upcase), f(&:chomp)
関数型でも、こういうように呼ぶ関数名が明確にわかる点では、Ruby はJS をしのぐ!

漏れが以下で作ったけど、手続き型の処理で、10行以上も掛かったw
情けない

Ruby 初心者スレッド Part 65
https://mevius.5ch.net/test/read.cgi/tech/1545421414/234

580 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 12:51:20.88 ID:C6v7oEvs.net]
クソみてーな恣意的な記号使いはperl譲りだな

581 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 13:17:28.26 ID:capoU8RA.net]
アンダースコア_はprologの時点であるんじゃね
それに記号なら恣意的だろ

582 名前:デフォルトの名無しさん [2019/03/09(土) 19:25:50.03 ID:hBO8FWAE.net]
>>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

583 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:49:27.50 ID:R3sqYFdd.net]
お題:文字列と数値nが与えられるのでn番目の文字とそれ以外の文字を上下にスライドさせて表示する

入力
abc 2

出力
*b*
a*c

584 名前:デフォルトの名無しさん mailto:sage [2019/03/09(土) 19:57:53.65 ID:C6v7oEvs.net]
お題か出力のどっちかが間違っている
日本語勉強した方がいい

585 名前:デフォルトの名無しさん [2019/03/09(土) 19:58:57.39 ID:hBO8FWAE.net]
>>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)

586 名前:デフォルトの名無しさん [2019/03/09(土) 20:10:49.99 ID:0OOZ8KrR.net]
>>557
オーバーフローは数学ですらないだろ。こっちは数学。


宇宙を支えていたのは、驚異のたし算だった
私がこのたし算を知ったのは20歳のころでした。その衝撃は、私の運命を変えるまでの威力を持っていました。
私の大学は2年生で所属学科を決めるシステムになっており、私はアインシュタインに憧れて物理学科に進もうとしていました。
その私が出会ったのがラマヌジャン(1887-1920)です。彼が描いた2つの絵を見た瞬間、私の中で何かが変わりました。
jbpress.ismedia.jp/mwimgs/4/b/400/img_4b7f33022b840f792a0324a10b89a24d369437.jpg
jbpress.ismedia.jp/articles/-/46939

587 名前:さまよえる蟻人間 mailto:age [2019/03/09(土) 20:18:26.71 ID:XY+I2Bbh.net]
>>574
応用数学ではオーバーフローも数学の一種。

588 名前:デフォルトの名無しさん [2019/03/09(土) 20:25:11.72 ID:hBO8FWAE.net]
>>364

Haskell

main = mapM_ (\c -> putStrLn $ c:[]) "hello"



589 名前:デフォルトの名無しさん [2019/03/09(土) 20:38:18.94 ID:1xJckQ5D.net]
>>544
kotlin
https://paiza.io/projects/cL6xIQA--yDFZ1pjndvzAw

Double型でやったら出力に小数点以下が付加されたが値として間違ってるわけではないのでそのままにする。

590 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 01:41:18.58 ID:5A3UW8N7.net]
>>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]]
'''

591 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 03:08:27.84 ID:LqrBe0vy.net]
>>571 ruby
s = "abc"
n = 2
t = "*" * s.length
t[n - 1] = s[n - 1]
u = s.clone
u[n - 1] = "*"
puts(t, u)

592 名前:デフォルトの名無しさん [2019/03/10(日) 11:41:34.27 ID:x4ZRCWyR7]
>>544,573

n = 3

xss = (take n.iterate (map (+ n))) [1..n]

もっと大きな行列渡したくて、n*nのリスト(行列)作る関数作った。
こういうのって、手続き型と宣言型で違いが顕著だと思った。

593 名前:デフォルトの名無しさん [2019/03/10(日) 11:57:40.70 ID:e6SI07pl.net]
>>571 J
f =: 4 : 0
|: ((,. -.) (<:x) = i. # y ) {"1 '*' ,. y
)

2 f 'abc'
*b*
a*c

594 名前:デフォルトの名無しさん [2019/03/10(日) 13:31:21.17 ID:vqbsu7fW.net]
>>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

595 名前:デフォルトの名無しさん [2019/03/10(日) 13:56:33.99 ID:vqbsu7fW.net]
>>571
>>582

引数の順序入れ替えて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

596 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:19:36.82 ID:lsf+n+kn.net]
>>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

597 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 17:47:53.28 ID:lsf+n+kn.net]
>>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

598 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 20:48:09.83 ID:z5UigTCL.net]
>>571 octave
https://ideone.com/fEaJMh



599 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:12:33.92 ID:ObNpfzdX.net]
ここっておっさんが多いイメージ

600 名前:デフォルトの名無しさん [2019/03/10(日) 21:16:39.36 ID:KcIurEvX.net]
>>559
Java
https://paiza.io/projects/uoq0pfsAO5vRexzfWg1Mdw?language=java

601 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:20:18.73 ID:z5UigTCL.net]
>>571 ruby
https://ideone.com/6NM2Z2

>>567
String#lines ←これの存在知らなかった
勉強になりました

602 名前:デフォルトの名無しさん [2019/03/10(日) 21:46:22.59 ID:KcIurEvX.net]
>>547
Java
https://paiza.io/projects/2ff8V2wS29AjINHLm-bgYw?language=java

603 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 21:59:51.08 ID:5renFNS0.net]
>>571
@Mathematica

https://ideone.com/gDkzl4

604 名前:567 mailto:sage [2019/03/10(日) 22:01:14.30 ID:bEzyp4mc.net]
>>589
余談だが、Ruby のString#lines の所を見たら、chomp: true で改行も削除できる!
Rubyは、色々と便利なものを作っている

p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT

#=> ["a", "b"]

605 名前:デフォルトの名無しさん [2019/03/10(日) 22:14:16.51 ID:SJp/1k7U.net]
>>571 Common Lisp
https://ideone.com/cnTKML

606 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:23.44 ID:KcIurEvX.net]
>>579
Java
https://paiza.io/projects/eCieLwJTqtEDvaYM4uknOA?language=java

607 名前:デフォルトの名無しさん [2019/03/10(日) 22:19:48.10 ID:KcIurEvX.net]
ごめん間違えた
>>571です

608 名前:デフォルトの名無しさん mailto:sage [2019/03/10(日) 23:51:29.55 ID:THpHptm5.net]
>>571 Node.js
https://ideone.com/l4XmDp



609 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 00:57:47.40 ID: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 名前:デフォルトの名無しさん [2019/03/11(月) 01:39:23.53 ID:+Nlo5Elt.net]
>>547
Kotlin
https://paiza.io/projects/fxNs_pgfP7MwmXYp2xQ1YA

611 名前:デフォルトの名無しさん [2019/03/11(月) 02:41:21.51 ID:+Nlo5Elt.net]
>>559
Kotlin
https://paiza.io/projects/rbSY9Q6oTve1ILy1AIIj_g

612 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 07:59:46.54 ID:hFtMxxmn.net]
>>547 Perl5
https://ideone.com/Mbj5Hz


push @{$h{lc $_}}, $_ for <STDIN>;
print "@{$_}" for grep{@$_ > 1} values %h;

613 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 09:18:51.69 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 10:48:42.57 ID:u4Ymakq9.net]
お題: 下の例のような入力から例の出力のアスキーアートを出力する。それ以外は自由
例:
入力: >>>>>vvvvv<<<<^^^^
出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v

615 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:00:20.46 ID:JmszPBJl.net]
これって一歩目はなんでもいいよね

616 名前:デフォルトの名無しさん [2019/03/11(月) 11:35:10.21 ID: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 名前:デフォルトの名無しさん [2019/03/11(月) 11:45:13.16 ID:+cahZmCl.net]
>>602
それ3番目と4番目は必ず1番目と2番目の長さ-1になってるの?

618 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 11:48:56.08 ID:u4Ymakq9.net]
>>603
>>605
そういうめんどくさい質問がこないように、
それ以外は自由と付け加えてある



619 名前:デフォルトの名無しさん [2019/03/11(月) 13:45:52.04 ID:+cahZmCl.net]
>>606
仕様をきっちり決めないと解釈の違いから沢山の違った回答が出てくる可能性があるのだが、それで良いと。

620 名前:デフォルトの名無しさん [2019/03/11(月) 16:12:48.47 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 15:42:22.28 ID:7+lrfCi1.net]
>>605
そもそも4方向にいくらかずつ進んで四角形で終わりという形とは限らないのでは?
ランダムに方向や距離を生成して既に通った道も上書きするような入力を許容すると考えたっていいはず。

622 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:07:33.07 ID:5vEtkzIB.net]
>>606 何でこれ以外の形は許さんと言えないんだ?
自由にどうぞなんて問題じゃ無いだろ。

623 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:18:14.19 ID:ZVqwh3rP.net]
>>607,610
こいつらホント掃き溜めのゴミだな

624 名前:デフォルトの名無しさん [2019/03/11(月) 16:19:55.06 ID:+cahZmCl.net]
>>571
Kotlin
https://paiza.io/projects/fOvQDvJ6VoTchgVL3pYJpw

625 名前:デフォルトの名無しさん [2019/03/11(月) 16:25:40.59 ID:+cahZmCl.net]
>>609
なるほど。しかしそれならばその事を書いておいて欲しかったな。

>>611
何を作れば良いのかよくわからないから質問しているだけなのだが。それが君にとって何か不都合なのか?

626 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 16:58:12.79 ID:PGatxMde.net]
>>602
出力おかしくねぇ?最初と最後の行は5列だけど
間の行ぜんぶ6列になってるぞ?

出力:
>>>>>
^****v
^****v
^****v
^****v
<<<<v

こうじゃね?
>>>>>
^***v
^***v
^***v
^***v
<<<<v

627 名前:デフォルトの名無しさん [2019/03/11(月) 17:14:58.23 ID:+cahZmCl.net]
ま、いいや。よくわかんない問題は放っておこう。

628 名前:デフォルトの名無しさん [2019/03/11(月) 18:14:45.27 ID: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 名前:デフォルトの名無しさん [2019/03/11(月) 19:08:54.88 ID: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 名前:デフォルトの名無しさん [2019/03/11(月) 19:49:55.14 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:21:39.70 ID:PGatxMde.net]
>>602 javascript
長くなっちった
https://ideone.com/vzncKq

入力: <<<<^^^^>>>>>vv<<<<<<<<<<<vvv>>>^^^^^^^>>>>>>>>>>vvvvvv
出力:
***^>>>>>>>>>>
***^*********v
***^**^>>>>>*v
***^**^****v*v
<<<^<<<<<<<v*v
v**^**^******v
v**^**<<<<***v
v>>>**********

632 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:33.05 ID:/Vx80pKW.net]
お題
m×nマスのチェス盤を考える。
1つのナイトが最も左上のマスにあり、そこから任意の回数動かすことができる。
ナイトが訪れることのできるマスの個数を求めよ。

m=1, n=1
=> 1

m=3, n=3
=> 8 (真ん中のマスを訪れることができない)

m=4, n=4
=> 16

633 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 19:36:35.88 ID:DXpwYxNa.net]
>>619 説明がないと何をどうやってるのかわけわからん。
先ずは入力と出力をどう解釈して作ったのか?
形にも一貫性があるとは思えないけど。

しかしこんなのがどんどん出てきたら、煩わしいだけ。

634 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:02:17.74 ID:JmszPBJl.net]
いや、その通りに歩くんだろ

635 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 20:07:58.88 ID:5vEtkzIB.net]
出題通り以外の回答はやめてほしいな。
それ以外の回答をする場合は、解説文も日本語で書いてくれよ。

不慣れなプログラムもあることだろうし、長いプログラムなんて見る気にもならないし、プログラムを見

636 名前:黷ホわかるというのは無し。 []
[ここ壊れてます]

637 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 21:26:59.93 ID:ALw/TkKR.net]
>>623
ソースの中身まではちゃんと確認してないけど、ちゃんと出題通りにできてると思う。
出題の"入力例"通りではないが、複雑な入力パターンに対して正しく動いてそうと思える実行例だと思うぞ。

638 名前:デフォルトの名無しさん [2019/03/11(月) 21:31:45.37 ID:1OBeL2+Y.net]
>>602 Common Lisp, >>619の移植
https://ideone.com/B76Dki



639 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:12:51.52 ID:+V1dboU8.net]
>>>v<^^>>
の場合
*^>>
>^>
*<v

640 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 22:40:32.65 ID:6pdTomDX.net]
>>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)));

641 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:02:42.18 ID:GdRfR4uu.net]
以下の整形式の.ini ファイルから、すべての値を取得して、
「セクション名 : キー名 : 値」で表示する

[sec1]
key1=val1

[sec2]
key2=val2

642 名前:デフォルトの名無しさん mailto:sage [2019/03/11(月) 23:51:36.77 ID:/Vx80pKW.net]
>>628 C++
https://ideone.com/V4sf81

643 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:26:56.22 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 00:37:42.27 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 01:38:34.08 ID: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 名前:デフォルトの名無しさん [2019/03/12(火) 05:56:44.85 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 17:03:25.03 ID:+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 名前:デフォルトの名無しさん [2019/03/12(火) 18:21:10.69 ID:MLSq27aG.net]
>>628 Io
f := method(s,
s split("\n\n")map(splitNoEmpties("[","]","\n",=")join(":"))
)



649 名前:デフォルトの名無しさん [2019/03/12(火) 18:30:10.82 ID:M/w6PjEF.net]
>>624
出題通りなのかどうかがわからんのだが。どう解釈したら出題通りとなるのか?

650 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 19:26:28.38 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 20:52:19.49 ID:2hm/Dong.net]
つまらん

652 名前:デフォルトの名無しさん [2019/03/12(火) 21:03:21.90 ID:KPetEW8/.net]
>>624

>>547に対して、ナチュラルソートされて無くても(普通のソートでも正しい答えが得られるとは限らない)正しい答えを出せるとか、出題者の意図を踏まえながら、意図を超えた範囲もカバーするのはいいんじゃ無いか?
意図を無視するのは論外だが。

653 名前:デフォルトの名無しさん [2019/03/12(火) 21:07:56.58 ID:KPetEW8/.net]
>>637
マシンパワーがあれば式を入れればいいだけってのはね。。。
解くのに頭使う。解いてみたら案外簡単(アルゴリズムが浮かぶのがキモ)。あえて難しくて最適化の道がある。とかが望ましい。

いあ、無茶振りだろうから、どれか2つ満たせればおkだが。

654 名前:デフォルトの名無しさん [2019/03/12(火) 21:12:06.00 ID:KPetEW8/.net]
例えば[[1,2,3],[4,5,6],[7,8,9]]みたいな任意のn*nなリスト(または配列)を非破壊的に作れ。とか。

655 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 21:43:25.40 ID:rf03pH6k.net]
>>641
一般的なミューテートするカウンタも使っちゃダメってことかな?

656 名前:623 mailto:sage [2019/03/12(火) 22:49:08.83 ID:oX4bYoPv.net]
>>628
お題を修正

[ ] = の3つは、特別な記号です。
それらを含まない行は、無視して

[sec1]
key1=val1

[sec2]
key2=val2
x=y

>>632
セクション名・キー名・値は、特定の文字列ではありません!
特別な記号以外の、任意の文字列です

657 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:03:23.82 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/12(火) 23:07:31.93 ID:+VdOvnK/.net]
>>637
 https://ideone.com/Y4N5oM  c++

 小さい数値は力技(bf2)で確認してみたが……



659 名前:デフォルトの名無しさん [2019/03/12(火) 23:27:43.44 ID:LDiZRGdZ.net]
>>602 Common Lisp
>>625のリファクタリング
ついでに * を空白に、開始地点を A、終了地点を Z に

660 名前:オてみた
https://ideone.com/zMHal6

Python
https://pastebin.com/NAGHLtcu
実行結果 https://webmshare.com/Ma3gZ
[]
[ここ壊れてます]

661 名前:デフォルトの名無しさん [2019/03/12(火) 23:42:34.93 ID:2FAQzMGK.net]
>>637 C
https://ideone.com/m3vejt

エクセルとかで実際に数列を計算してみると、長さ12(剰余の数-1)以下の周期になるっぽいのでそれで求められる。
普通に計算するとq * a[i] + r はどんどん大きくなるけど、
毎回 (q * a[i] + r) mod 13としても、計算に影響はないようなので、オーバーフローもせずに計算できる。
だたし、数学的に正しいか保証しかねるが。

662 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:12:22.73 ID:rGhbMCbu.net]
>>645
12 0 11 1
=> 11
というコーナーケースが…

663 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:29:04.16 ID:Eq+ygVqk.net]
>>648

確かに、
コメントアウト(bf2)するときに誤ってしまったようだ、
("if(n==0)" だったのだが、いらないなぁ)
どっちにしろ、0や1のテストは、やってない

664 名前:デフォルトの名無しさん [2019/03/13(水) 00:51:17.73 ID:vPzmbHWs.net]
>>642
だめ。
そこが関数型言語と手続き型言語の考え方の大きな違いだし。
皮肉にも?それ作った時、入門書の関数より考え方の違いが分かった。

665 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 00:54:41.38 ID:bUFEpZHr.net]
>>643
> セクション名・キー名・値は、特定の文字列ではありません!
> 特別な記号以外の、任意の文字列です

えぇ…

入力:
[あああ]
いいい=ううう

[えええ]
おおお=かかか

出力:
あああ:いいい:ううう
えええ:おおお:かかか

少なくとも任意の文字列には対応してるじゃん。不当指摘だ!

666 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 01:18:15.16 ID: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 mailto:sage [2019/03/13(水) 02:39:20.04 ID:ZImJqTUY.net]
>>651
スマン。漏れの間違い!

key, val などの特定の文字列を置換しているのかと、勘違いしていた

668 名前:デフォルトの名無しさん [2019/03/13(水) 05:11:02.02 ID: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 名前:デフォルトの名無しさん [2019/03/13(水) 06:35:32.94 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/03/13(水) 20:01:04.25 ID:loIc2/nm.net]
>>628 ruby
https://ideone.com/FBiZcF






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<332KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef