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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.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/

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

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

577 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:23:31.29 ID:QICqPxzN.net]
>>565
行末が数字のときに対応できない
perl -pe 's/(\d+)(\D*)$/($1+1).$2/e'
のほうがよくないかな

578 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 06:53:31.48 ID:5l49iFOd.net]
>>520
その場合の良いアルゴリズムって
「素因数分解を早く解くアルゴリズム」
よね。
それがもし思いついたらフィールズ賞ものではw

579 名前:デフォルトの名無しさん [2020/09/18(金) 21:10:31.47 ID:JxxZTRpA.net]
>>562
Java
https://paiza.io/projects/X0KHD9cQEH8LTka6nmDd_w

580 名前:デフォルトの名無しさん [2020/09/18(金) 21:36:05.11 ID:JxxZTRpA.net]
>>553
Java
https://paiza.io/projects/ka8qfAJFIag1eovg263vzg

581 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 21:54:28.27 ID:WsEcPr9A.net]
>>562
haskell

theStr = "B0AAYR8ZZcUXLxKmL1ow8RxZAAUCS1j6pYOJo9n52mwITWoimM3UArCpKAGzSRZrA1vUpAerENynuJXTYuJb9HlO9NZvHdpFvCMsThVOnxhgx3T5jCfRhanH4bJJOvjoaTMdixKg4TC90zOCwyeVKJ62KAgv47P72sfPsQaH8jaG8yWnqbwtyv0OeKZa7qISm6g2MHrOlNb8RVzt36jau1hYCqKuuUBGLGuFToYptzqjkfdAoxAqqmeQO7PVcUS"

f x = let
(a,b) = span (\x-> (x<'0') || (x>'9')) $ reverse x
c = show $ (+1) $ read $ return $ head b
in reverse $ a++c++(tail b)

main = do
print $ f theStr

582 名前:デフォルトの名無しさん [2020/09/18(金) 23:21:52.09 ID:hhldwLbP.net]
>>567
そうだった。 + じゃなくて * だったな。

583 名前:253 mailto:sage [2020/09/18(金) 23:34:45.95 ID:/yEGF/vF.net]
>>568
素因数分解まで行かない。
素でなくてもいいので因数のうちイチバン大きいもの。
なんかいい解法見つけられないか、考えているけどいまのところ見出せていない

584 名前:253 mailto:sage [2020/09/18(金) 23:36:27.35 ID:/yEGF/vF.net]
いや、違うな…
因数のうちイチバン大きいものでは、ダメだわ

585 名前:デフォルトの名無しさん [2020/09/19(土) 00:05:40.30 ID:HLFklpM8.net]
>>562
C

https://paiza.io/projects/IEDhYc83EDXZuCbsxf_QUg

正規表現を使わずに行末から一文字づつ行頭に向かって検索してやっている。



586 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 00:59:21.89 ID:HX0Lirqs.net]
√n以上の最小の約数

587 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 12:14:05.54 ID:iLwsU5Ay.net]
初出題
数学板の問題より

5つのサイコロの1〜6の面がそれぞれ赤白黄青緑にそれぞれ

["byrbwg", "yrgwbb", "gbrwwy", "gyrbww", "gbrybw"]

と塗り分けられている
この状態では1-6を天地の軸として2〜5の側面にはそれぞれ

["yrbyb","rgrrr","bwwby","wbwwb"]

となっている
それぞれのサイコロを適当に回転させて全ての側面にrwybgがちょうど一回ずつとなるようにしたい
そのような回転の組み合わせは何通りか
本質的に同じものを重複して数えるのを避けるために最初のサイコロの回転は
・動かさない
・1→2,2→3,3→1,4→6,5→4,6→5
・1→3,2→1,3→2,4→5,5→6,6→4
の3つのうちどれかのみを許すとする
(出力)
["yrbgbw","gbybrw","bgwryw","bygwwr","bwrygb"]
["yrbgbw","gbybrw","wywrgb","rwgwyb","bgrywb"]
["rbywgb","gyrbbw","wwgyrb","ygbrww","brwgyb"]
["rbywgb","wybrbg","wwgyrb","wgrbwy","brwgyb"]

588 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 15:12:41.86 ID:BWMKzapi.net]
https://rio2016.5ch.net/test/read.cgi/math/1598637093/133-
わけわからん問題文にするなよ・・・

589 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 16:07:21.18 ID:wSOXcncc.net]
全然違って草

590 名前:デフォルトの名無しさん [2020/09/19(土) 16:29:35.90 ID:HLFklpM8.net]
>>577
君が何を言わんとしているのかが全くわからない。

591 名前:253 mailto:sage [2020/09/19(土) 17:15:41.66 ID:6KnxgpBj.net]
>>518 Perl5、>>576にヒントを貰った通り√を使ってnaiveに書くと…

use POSIX 'ceil';
for $n (81, 87, 91) {
 $r = ceil sqrt $n;
 for ($r..$n) {
  $i = $_;
  last until $n % $_;
 }
 print "$n => $i\n"
}

実行結果
~ $ perl 18_509_99_naive.pl
81 => 9
87 => 29
91 => 13

計算量の少ないもう少しカッチョイイ方法を見出せればなぁ…

592 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:37:57.70 ID:HX0Lirqs.net]
>>577です
やはりちょっと伝わらないですね
>>577
は取り下げます

593 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:39:46.15 ID:HX0Lirqs.net]
>>581
計算量減らすなら√n以下の最大の約数d求めてn/dを出力すれば計算量は減るな

594 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:40:46.29 ID:wSOXcncc.net]
減るというかそもそも計算量が同じというか

595 名前:デフォルトの名無しさん mailto:sage [2020/09/19(土) 21:46:21.17 ID:HX0Lirqs.net]
イヤnが素数の場合に√nから上むきに探索すると計算量はnになるけど下向きなら√nになる
√n以上の約数と√n以下の約数は同数だけど整数そのものは下側には√nしかなく、上にはn-√nあるので下向きに探していった方が速い



596 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 00:25:54.87 ID:ZGoKBb8Y.net]
ポラード・ロー法使えばもっと計算量は減る
素数判定と組み合わせればモンテカルロ法ではなくラスベガス法になるから、正当性も担保される

597 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 01:39:54.18 ID:wHMtOvf4.net]
素因数分解利用するなら素因数分解そのものが手早くできてもダメでしょ?
それを何個か使って最も√nに近いもの探すのはかなり難しいんじゃなかったっけ?
つまり素因数分解n=Πpi^eiが与えられたとして、つぎは
0≦xi≦eiを動かすときΣxi log(pi) が1/2 log(n)に最も近くなるものを決定しなければならない
コレなんか名前ついてる問題で指数オーダーのアルゴリズムしか見つかってないんじゃなかったっけ?
素因子の数はlog(n)のオーダーで増えていくから、結局exp(c log(n)) のオーダーになって、cがどれくらいに収められるか、そもそも指数オーダー必要なのかも未解決なんじゃなかったっけ?

598 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 06:22:49.81 ID:OZ4qNDWZ.net]
>>585
素数判定はそもそも計算量少ない

599 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:19:03.22 ID:mk/D54YH.net]
>>588
√n以上の最小の約数をdとして上むき探索に必要な時間はすうがく/d-√n\、下向き探索のそれは\√n-n/d/ (/〜\と\〜/はfloorとceiling)
差は/d-√n\-\√n-n/d/ =\d+n/d-2√n/はam≧gmと\〜/の広義単調性から0以上で上むき探索は素数であるか否かに限らず常に計算量は同じかそれ以上
素数であるか予備検査しても結局上向きに探索したら計算量は同じ以上かかる

600 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 10:50:48.99 ID:g28HruB5.net]
あ、間違えた
上向き探索の探索量はd-/√n\+1=/d-√n+1\で/~\はceiling
下向き探索の探索量は\√n/-n/d+1=\√n-n/d+1/で\~/はfloor
まぁ常に上向きの方が計算量は増える
まぁもちろんnをまともに素因数分解して>>587みたいな方法で√nオーダーより真に早いのがあるなら上向きも下向きもないけど、もうそこまで行ったら研究者レベルの話でしかない気がする

601 名前:デフォルトの名無しさん [2020/09/20(日) 11:23:17.24 ID:MLu0Cj9r.net]
>>559-560
短いこの間でダークサイドに堕ちてて草

602 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 11:58:05.82 ID:FaUtZa6z.net]
>>591
お詫び→弁解→言い訳→逆ギレ
冷静に書いてたつもりが書いてくうちに興奮して見事なコンボを決めたようだ

603 名前:デフォルトの名無しさん [2020/09/20(日) 12:47:09.77 ID:MLu0Cj9r.net]
感情豊かでかわいいw

604 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 12:59:00.77 ID:wHMtOvf4.net]
気分を変えてまた数学板より

自然数nに対して格子点の集合{(a,b) | a,bは1〜nの整数}の中の相異なる4点の組みで同一円周上に並ぶものの個数を数え上げよ
n:1〜8では
[0,1,14,194,826,2491,6364,14564]
のハズ

605 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 13:05:52.02 ID:wHMtOvf4.net]
>>594
ちなみにn=3の場合の14個は
1×1の正方形:4個
2×2の正方形:1個
√2×√2の正方形:1個
2×1の長方形:4個
4辺が1,1,√2,2√2の等脚台形:4個
の14個



606 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:36:43.29 ID:XyOg3AIQ.net]
>>594
https://ideone.com/L3IoWm
{0,1,14,184,762,2257,5704,13040}と出たんだが
どっちが合ってる?

607 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:44:44.75 ID:XyOg3AIQ.net]
一直線上にある4点の組を余分に数えたところ >>594 の解と一致した
https://ideone.com/GUZoZL

608 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 18:56:48.73 ID:wHMtOvf4.net]
あ、ホントだ失礼しました

609 名前:デフォルトの名無しさん mailto:sage [2020/09/20(日) 19:10:27.22 ID:wHMtOvf4.net]
[0,1,14,184,762,2257,5704,13040]
が正解ですね

https://ideone.com/YULQQ4

610 名前:デフォルトの名無しさん [2020/09/20(日) 22:46:33.41 ID:9sb+TTLg.net]
>>594
問題がわからない。

611 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 00:11:09.46 ID:ZXxiMs6i.net]
>>600
n=3だと

●●◯ ◯●● ◯◯◯ ◯◯◯
●●◯ ◯●● ●●◯ ◯●●
◯◯◯ ◯◯◯ ●●◯ ◯●●

●◯● ◯◯◯ ●●◯ ◯●●
●◯● ●◯● ◯◯◯ ◯◯◯
◯◯◯ ●◯● ●●◯ ◯●●

●●◯ ◯●● ◯◯● ●◯◯
◯◯● ●◯◯ ◯◯● ●◯◯
◯◯● ●◯◯ ●●◯ ◯●●

●◯● ◯●◯
◯◯◯ ●◯●

612 名前:
●◯● ◯●◯

の14通り
[]
[ここ壊れてます]

613 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 11:36:08.07 ID:VFD1LGbi.net]
>>594のお題は、
平面上に4点を選んだとき、その4点をすべて含む円周が存在する場合としない場合がある
xy平面上に、x,yの各座標が1〜nの整数であるような、互いに異なる点を4つ選んだとき、4点すべてを含む円周が存在するものがいくつあるか?
n=1〜8についてそれぞれ数え上げよ
(註:n=1のときは異なる4点を選べないので、解は0でよい)

ってことでいいかな?

614 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 13:45:14.08 ID:tVxoOCVr.net]
>>601
n=4 のときの184通り
imgur.com/GNuPa4z.png

615 名前:デフォルトの名無しさん mailto:sage [2020/09/21(月) 14:54:29.54 ID:/KyZWHiy.net]
>>603
正解だと思う
おそらくn=9までは

[0,1,14,184,762,2257,5704,13040,25996]

今作ってるのはC[n^2,4]を全数検査してるのでO(n^8)で計算量増えるので二桁以上はしんどいorz



616 名前:デフォルトの名無しさん [2020/09/22(火) 00:03:46.43 ID:jIz1rAqD.net]
誰かフォルダにパスワード駆ける方法教えてくれ

617 名前:253 mailto:sage [2020/09/22(火) 02:15:18.79 ID:jDcMk3G3.net]
対象性を考慮する以外の計算量の削減手段はないのかねこの手の問題は
解決すべき課題は計算量の削減ばかりではないだろうけれどさ

618 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 09:28:15.64 ID:yucbsR+t.net]
まぁ何に重きを置くかですな
数学板でこの手のプログラムが必要になるのは誰も答え持ってなくて、一応答えは出てるけど確認したいときとか
その時は速度より“確実に正しい”事の方が重要になる
この場合も対称性やら、明らかに無駄な可能性を排除すれば速度は上がるけど“確実に正しい”のかは怪しくなってしまう
実務でプログラム使う人もその辺のtpoは意識してるのでは?、
コード汚くても高速な奴も募集中

619 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 11:56:55.93 ID:LgsCAwYw.net]
>>603に挙げられている184通りのうち、その3/4にあたる138通りが、直径が√10のものである
そのうち、円の中心が図の中央にあるものは、候補となる点が8個あるので、8C4 = 70 通りある。
図の中央から(±1,0)または(0,±1)ずれたものは、候補となる点が6個なので4×(6C4)=60通り
図の中央から(±2,0)または(0,±2)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
図の中央から(±1,±1)ずれたものが、候補となる点が4個なので4×(4C4)=4通り
合わせて 70+60+4+4=138 通りと数え上げることができる

図の中央を基準にすることができるものばかりとは限らないところには注意が必要だが
総当たりよりは効率化が見込めると思われる。

620 名前:253 mailto:sage [2020/09/28(月) 22:51:28.57 ID:mT2w1+AU.net]
>>518 Python3, >>585を参考に計算量を√nに減らした解法

import math
for n in [81, 87, 91, 13]:
  s = math.sqrt(n)
  f = n
  for i in reversed(range(2, 1 + math.floor(s))):
    q, m = divmod(n, i)
    if m == 0: f = q; break
  print(n, '=>', f)


実行結果
~ $ python 18_509_99_rootn.py
81 => 9
87 => 29
91 => 13
13 => 13

もっとスマートな解法を考えていると双曲線を意識した解法を意識してしまうが、
簡単には解けない数学の問題に突き当たると思う

621 名前:253 mailto:sage [2020/09/28(月) 22:53:47.02 ID:mT2w1+AU.net]
>>609
× 意識した解法を意識してしまうが、
○ 意識した解法を思い浮かべてしまうが、

622 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 18:23:40.44 ID:TPx3FsW2.net]
お題: バブルソートを実装せよ

623 名前:253 mailto:sage [2020/09/29(火) 23:24:18.49 ID:219xwwXO.net]
>>611
プログラミングのお題スレ Part13
mevius.5ch.net/test/read.cgi/tech/1549160513/231

624 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 20:15:38.19 ID:rtPyMlCZ.net]
古参はここで「番兵おけやボケェ!」と言う

625 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 01:25:55.75 ID:cJ6xF5hb.net]
お題:
アッカーマン関数の引数が与えられるので、計算過程を1ステップずつ出力してください

入力:
2 1

出力:
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5



626 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 11:20:33.49 ID:iee67Noq.net]
>>614
Haskell

astr m n = "A(" ++ m ++ "," ++ n ++ ")"
ack' 0 n = (n+1, [astr (show 0) (show n), (show $ n+1)])
ack' m 0 = let
(val, ss) = ack' (m-1) 1
in (val, (astr (show m) (show 0)) : ss)
ack' m n = let
(val1, ss1) = ack' m (n-1)
(val2, ss2) = ack' (m-1) val1
ss = [astr (show $ m-1) s | s <-ss1] ++ (tail ss2)
in (val2, (astr (show m) (show n)):ss)
ack m n = map (++"\n") $ snd $ ack' m n

main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ putStr $ ack x y

627 名前:デフォルトの名無しさん [2020/10/01(木) 12:09:11.51 ID:OaA9a4hN.net]
Haskellでもこんな長くなるの?

628 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 12:15:24.40 ID:O+PWz9pR.net]
>>616
いや、上手な人ならもっと上手くやるはず
アホほどライブラリがあってそれ使えば楽々のハズだけど修行中の身ではこんなもんorz

629 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 14:04:34.18 ID:Am+nhG+G.net]
>>615
ちょっとチューンナップ
達人なら***とか>>>とか意味わからん演算子使ってもっとスッキリ書くんだろうけどアホほどあって使いこなせんorz

haskell
----
astr m s = "A(" ++ (show m) ++ "," ++ s ++ ")"
ack 0 n = [astr 0 $ show n, show $ n+1]
ack m 0 = (astr m $ show 0) : ack (m-1) 1
ack m n = let
ss1 = ack m (n-1)
in [astr m $ show n]
++ (map (astr (m-1)) ss1)
++ (tail $ ack (m-1) (read $ last ss1))

main = do
[x,y]<-(return.(map read).words)=<<getLine
mapM_ ((putStr).(++"\n")) $ ack x y

630 名前:蟻人間 mailto:sage [2020/10/02(金) 19:50:35.06 ID:gQLwfaGp.net]
お題: 野球のボールの動きを物理シミュレートして、ピッチャーの投げてきたボールをより遠くにかっ飛ばすバッターAIを開発せよ。

631 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 20:54:50.29 ID:tP403VLl.net]
カーブやシュートも再現しろよ

632 名前:253 mailto:sage [2020/10/02(金) 21:41:56.95 ID:kl4hmyt8.net]
>>619

─┼─┐─┼─  /  ,.           `゙''‐、_\ | / /
  │  │─┼─/| _,.イ,,.ィ'    ─────‐‐‐  *  ←>>蟻人間
  │  |ツ │    |  |  | イン /´⌒`ヽ    // | \
                     {,    リ)  / ./ |  \
               __ /}从、 リ( /  /  |
      ,. ,. -‐===‐- `つ/ ,.イ ’^ソハノリ   / ∵|:・.
    〃〃〃〃      //ミノ__  /´   /∴・|∵’
ヽ_I__I__I__I__I_I     __ノ_/ /    ヽミ、、   .∵.;|∵’:;
ー{____,,二二二ニ) ノΘ(__   )  ゙ 、∵.;|∵’,
 /I I I I I I     .^^^'   \ !  ̄フ    ゙ 、 |∴
                   ソ  /      `
                  ノ⌒ヽ')
                / ノ/ /
               /\/ ∧/   /       ',
              / /  ノ./   ./        ',
             ノ/   ヘ__、  ./ / ̄ ̄ ̄ヽ .',
            ヘ_'_,       /  \   /  ',
                     /    \/    ',
            ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙             ゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙

633 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 21:46:15.88 ID:JDxjQVnw.net]
ナイス

634 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 22:04:39.76 ID:jsz+6t1Q.net]
>>621
くっそワロタ

635 名前:253 mailto:sage [2020/10/03(土) 01:10:19.52 ID:io8Ij0O0.net]
>>614 Perl5

use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n, $l, $r) {
 say "${l}A($m, $n)$r";
 $m ? $n
  ? A($m-1, A($m, $n-1, "${l}A(".($m-1).', ', ")$r"), "${l}A(".$m.', ', ")$r")
  : A($m-1, 1, "${l}A(".($m-1).', ', ")$r") : $n + 1;
}
say A(2, 1, '', '');


実行結果
~ $ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, A(1, 1)))
A(1, A(1, A(0, A(1, 0))))
A(1, A(1, A(0, A(0, A(0, 1)))))
A(1, A(1, A(1, A(0, 2))))
A(2, A(1, 3))
A(2, A(0, A(1, 2)))
A(2, A(0, A(0, A(1, 1))))
A(2, A(0, A(0, A(0, A(1, 0)))))
A(2, A(0, A(0, A(0, A(0, A(0, 1))))))
A(2, A(0, A(0, A(1, A(0, 2)))))
A(2, A(0, A(1, A(0, 3))))
A(2, A(1, A(0, 4)))
5



636 名前:253 mailto:sage [2020/10/03(土) 01:13:51.37 ID:io8Ij0O0.net]
なんかBugってる…orz

637 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:07:42.48 ID:xbar0BlH.net]
>>614 perl5
https://ideone.com/pRMAjA
s///e でいける

638 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:20:08.70 ID:nr2+4P+J.net]
perlの正規表現マジック恐ろしや

639 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:37:17.41 ID:MOu6VxbM.net]
>>626
すげえな
ほとんどワンライナーだ

640 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:46:20.34 ID:ul2MWjNf.net]
そうなのよね
入力もらって表示→ワンステップだけ展開して戻る
の繰り返しが1番楽なんだけどなぁ

641 名前:253 mailto:sage [2020/10/03(土) 14:01:25.06 ID:5WkJC33J.net]
>>614 Perl5、>>624 を修正。 >>626 あら正規表現で書けちゃうのかイナ…
use feature qw{signatures say}; no warnings 'experimental';
sub A($m, $n) {
 $m ? $n
  ? do{ my ($m2, $n2) = ($m-1, $n-1);
     push @$l, "A($m2, "; push @$r, ')';
     say @$l, "A($m, $n2)", @$r; A($m2, A($m, $n2)) }
  : do{ my ($m2, $n2) = ($m-1, 1);
     say @$l, "A($m2, $n2)", @$r; A($m2, $n2)}
  : do{ my $s = $n + 1; say @$l, $s, @$r; pop @$l; pop @$r; $s };
}
($m, $n) = (2, 1);
say "A($m, $n)";
A($m, $n);

実行結果
$ perl 18_605_Ackermann_func.pl
A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

642 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 18:00:38.18 ID:WWjeAKvH.net]
>>614 ocaml
https://ideone.com/dqTO60
let (>>) f g x = g (f x)
let rec a m n p =
let () = p (Printf.sprintf "A(%d, %d)" m n) in
if m = 0 then n + 1
else if n = 0 then a (m - 1) 1 p
else a (m - 1) (a m (n - 1) (Printf.sprintf "A(%d, %s)" (m - 1) >> p)) p
let () = print_int (a 2 1 print_endline)

A(2, 1)
A(1, A(2, 0))
A(1, A(1, 1))
A(1, A(0, A(1, 0)))
A(1, A(0, A(0, 1)))
A(1, A(0, 2))
A(1, 3)
A(0, A(1, 2))
A(0, A(0, A(1, 1)))
A(0, A(0, A(0, A(1, 0))))
A(0, A(0, A(0, A(0, 1))))
A(0, A(0, A(0, 2)))
A(0, A(0, 3))
A(0, 4)
5

643 名前:デフォルトの名無しさん mailto:sage [2020/10/07(水) 20:33:26.90 ID:0TsEuxhN.net]
>>614 octave
https://ideone.com/50i12U
function c = a(m, n, p)
p(sprintf('A(%d, %d)', m, n));
if m == 0
c = n + 1;
elseif n == 0
c = a(m - 1, 1, p);
else
c = a(m - 1, a(m, n - 1, @(s) p(sprintf('A(%d, %s)', m - 1, s))), p);
end
end
disp(a(2, 1, @disp));

644 名前:253 mailto:sage [2020/10/08(木) 02:27:24.66 ID:Gy7CYzaJ.net]
藻前ら、なかなかやるなー
気に入った。

645 名前:蟻人間 mailto:sage [2020/10/08(木) 13:59:34.65 ID:N89hoMl4.net]
お題: ax**2+b*x+c==0という形の二次方程式を解き、全ての実数解と実数解の個数を表示する。



646 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 15:03:23.36 ID:eK30Q5Ei.net]
実数解はルートを含んだ形でいいのか?
あるいは小数点以下何桁まで正確に求めるのか?

647 名前:蟻人間 mailto:sage [2020/10/08(木) 15:04:48.84 ID:N89hoMl4.net]
>>635
浮動小数点数でいいよ。

648 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 21:36:29.64 ID:Q4ykcHSC.net]
>>633
∧_∧  / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
(    )  \_____
| | |
(__)_)

649 名前:蟻人間 mailto:sage [2020/10/09(金) 13:26:20.64 ID:pUAVGuih.net]
お題:計算ができる文章テンプレートを実装し、つるかめ算を自動生成せよ。

文章テンプレートの例:
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」

変数は「$(変数名)」のように表し、その具体的な値は入力として与えられる。
計算式は{ }で囲って表す。
計算式は変数や定数、加減乗除の演算子、または丸カッコを含むことができる。

入力の例:「ツルの数=3, カメの数=4」

650 名前:デフォルトの名無しさん [2020/10/09(金) 14:02:14.80 ID:/NdRCF04.net]
>>634 js
function quadraticWithCount(a, b, c) {
const inSqrt = b ** 2 - 4 * a * c
if (inSqrt < 0) return [[], 0]
const l = - b / (a * 2)
if (inSqrt === 0) return [[l], 1]
const r = Math.sqrt(inSqrt) / (a * 2)
return [[l - r, l + r], 2]
}

console.log(quadraticWithCount(3, -2, -1))
console.log(quadraticWithCount(3, 6, 3))
console.log(quadraticWithCount(1, 2, 3))

// [ [ -0.3333333333333333, 1 ], 2 ]
// [ [ -1 ], 1 ]
// [ [], 0 ]

651 名前:蟻人間 mailto:sage [2020/10/09(金) 14:14:06.07 ID:LR5flFjI.net]
>>638
追記: パーサーを作れない人はevalを用いても構わない。

652 名前:デフォルトの名無しさん [2020/10/09(金) 14:14:59.57 ID:/NdRCF04.net]
>>634 js 改善
function quadratic(a, b, c) {
const rt = Math.sqrt(b ** 2 - 4 * a * c)
return [(-b + rt) / (2 * a), (-b - rt) / (2 * a)]
}

function quadraticReal(...abc) {
const ans = quadratic(...abc)
const [a1, a2] = ans
if (isNaN(a1)) return []
if (a1 === a2) return [a1]
return ans
}

const quadraticRealWithCount = (...abc) => addCount(quadraticReal(...abc))

const addCount = a => [a, a.length]

console.log(quadraticRealWithCount(3, -2, -1))
// [ [ 1, -0.3333333333333333 ], 2 ]
console.log(quadraticRealWithCount(3, 6, 3))
// [ [ -1 ], 1 ]
console.log(quadraticRealWithCount(1, 2, 3))
// [ [], 0 ]

653 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 17:52:52.10 ID:gniylpO4.net]
>>638 Ruby
ツルの数 = 3
カメの数 = 4
Template =<<_EOT_
「ツルとカメが合わせて{$(ツルの数)+$(カメの数)}います。
足の合計本数が{$(ツルの数)*2+$(カメの数)*4}本です。
カメは何匹いますか。」
_EOT_

puts Template.gsub( /\{(.*?)\}/ ){ eval $1.gsub( /\$\((.*?)\)/ ){ $1 } }

654 名前:253 mailto:sage [2020/10/09(金) 22:43:14.04 ID:/QeZd0d9.net]
>>638 Perl5

use utf8;
no warnings 'utf8';
$ツルの数 = 3;
$カメの数 = 4;
print <<EOF
「ツルとカメが合わせて@{[${ツルの数}+${カメの数}]}います。
足の合計本数が@{[${ツルの数}*2+${カメの数}*4]}本です。
カメは何匹いますか。」
EOF


実行結果
~ $ perl 18_633_ツルの数+カメの数.pl
「ツルとカメが合わせて7います。
足の合計本数が22本です。
カメは何匹いますか。」

655 名前:蟻人間 mailto:sage [2020/10/09(金) 23:14:45.18 ID:LR5flFjI.net]
お題: 2つのRGBカラーが#RRGGBB形式で与えられる(RRGGBBは六桁の十六進数とする)。
2つの中間色を#RRGGBB形式で出力せよ。
可能ならばこれら3つの色をカラーバーとして表示せよ。



656 名前:蟻人間 mailto:sage [2020/10/09(金) 23:26:06.11 ID:LR5flFjI.net]
>>644
入力例1: #112233, #99AAFF
入力例2: #AD03ff, #a39e75

657 名前:デフォルトの名無しさん mailto:sage [2020/10/09(金) 23:55:14.23 ID:ACx6TREf.net]
>>644,645
自明な入力例だけを示しても、出力例も出さないと意味ないだろう。
2色の中間色ってのが曖昧じゃね?
単にR,G,Bそれぞれの平均を取るだけなのか、赤と紫の中間が赤紫になるように循環する色相で中間をとるのかとか。

658 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 02:56:37.74 ID:KFXrJR76.net]
問題が玉石混合だなぁ

659 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:06:51.16 ID:PdovQueR.net]
>>643
>変数は「$(変数名)」のように表し、

660 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 07:45:17.48 ID:nh4sk35x.net]
お題: 20201010と出力してください。ただしコードに使っていい数字は1のみです。

661 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 08:25:49.31 ID:qt6u2bFw.net]
>>649 python

a=1;b=a+a;c=a-a
print(b,c,b,c,a,c,a,c,sep='')
#出力20201010

662 名前:デフォルトの名無しさん [2020/10/10(土) 10:53:30.16 ID:nh4sk35x.net]
>>649 自分で js
const t = `
`.charCodeAt()
console.log(t + t + "" + (t + t) + t + t)

const m = "ϲ".charCodeAt()
console.log(m + m + "" + m)

663 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 12:06:27.17 ID:0z4oJBva.net]
>>649
js本日限定
new Date().toLocaleDateString().split(/-|\//).join``
//=> "20201010"

664 名前:デフォルトの名無しさん [2020/10/10(土) 14:54:47.61 ID:iOujIiR/.net]
>>647
×こんごう
○こんこう

665 名前:デフォルトの名無しさん [2020/10/10(土) 14:57:00.84 ID:iOujIiR/.net]
>>649
Java
https://paiza.io/projects/8QZuxNJ_iMGrfafT8HlLGw



666 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 15:40:40.94 ID:Duwb5Fsi.net]
>>654
012にOIZ使うのセンスある

667 名前:デフォルトの名無しさん [2020/10/10(土) 18:37:22.80 ID:jNM1f0U4.net]
>>649 C
https://ideone.com/5BGavX

668 名前:デフォルトの名無しさん [2020/10/10(土) 18:54:45.98 ID:V01gi3BN.net]
>>656
Windowsでもそのままでいけるのか?

669 名前:蟻人間 mailto:sage [2020/10/10(土) 19:24:31.52 ID:c6WyhNHP.net]
お題: 振動数1000Hzの音を1秒間発振せよ。

670 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:32:24.80 ID:53GLINoh.net]
>>649 c
https://ideone.com/DbqsXs

671 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 19:46:18.01 ID:LCYuVeVr.net]
haskell

import Data.Maybe
main = print $ product $ map ((fromJust).(flip lookup (zip ['\t'..] [1..]))) "&myC"

672 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 21:44:48.33 ID:0z4oJBva.net]
>>658 js
var ctx = new window.AudioContext
var osc = ctx.createOscillator()
osc.type = 'sine'
osc.frequency.value = 1000
osc.connect(ctx.destination)
osc.start()
osc.stop(1)

673 名前:デフォルトの名無しさん mailto:sage [2020/10/10(土) 23:07:21.98 ID:t1LUP7rm.net]
>>649
haskell 改良

unicode = length . tail . (enumFromTo minBound)
main = print $ product $ map unicode "ാᝇ"

674 名前:デフォルトの名無しさん [2020/10/10(土) 23:18:40.46 ID:iOujIiR/.net]
>>644
Java
https://paiza.io/projects/taHgDigIq_C5KjS66xaCfQ
https://dotup.org/uploda/dotup.org2277678.png

675 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 00:16:06.04 ID:6GsmNhIZ.net]
>>649 JavaScript
[1+1,1-1,1+1,1-1,1,1-1,1,1-1].reduce((acc,n)=>acc+n,'')



676 名前:デフォルトの名無しさん [2020/10/11(日) 01:54:01.50 ID:eYi6TEVp.net]
>>614
Java
https://paiza.io/projects/IVaRnsx6lYLlO1CcbniO-Q

677 名前:デフォルトの名無しさん [2020/10/11(日) 08:58:57.96 ID:luIvAMCe.net]
>>649 J
smoutput ,&":/ 'amp' i. 'papamama'

678 名前:デフォルトの名無しさん [2020/10/11(日) 11:20:41.53 ID:eXVrSXVr.net]
>>649 bash
aa=1; bb=$((aa-aa)); cc=$aa$bb$aa$bb; printf "%d" $((cc+cc)) $cc; echo

679 名前:デフォルトの名無しさん [2020/10/11(日) 17:59:24.67 ID:/6XslNRS.net]
>>638
Perl
https://paiza.io/projects/wfQXB4arB2zbu4DNYEiU5w

eval が使えて楽なので、つい。

680 名前:デフォルトの名無しさん [2020/10/11(日) 18:12:54.16 ID:eYi6TEVp.net]
>>611
Java
https://paiza.io/projects/2bTy71EhJJcVemamRx8IPA

681 名前:デフォルトの名無しさん [2020/10/11(日) 19:16:59.76 ID:/6XslNRS.net]
>>644
Kotlin
https://paiza.io/projects/O1eUwROYKRQepDq3N-VyUA

paiza.io はHTMLで出力させてブラウザに表示できるのでカラーバーも出してみました。

682 名前:デフォルトの名無しさん [2020/10/11(日) 19:36:20.38 ID:eYi6TEVp.net]
これは良いこと聞いた

683 名前:デフォルトの名無しさん [2020/10/11(日) 19:48:34.94 ID:ki6dTuuo.net]
>>649 Common Lisp (SBCL, 処理系依存)
https://ideone.com/nImAgj

684 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:05:13.72 ID:FQjAt+Dq.net]
>>672
かわいい

685 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 20:30:57.80 ID:vt3DXswM.net]
>>649 brainfuck

>+++++++[<+++++++>-]<+.--.++.--.+.-.+.-.



686 名前: mailto:sage [2020/10/11(日) 23:30:32.44 ID:A2vGg89g.net]
>>614
C(C++) https://mevius.5ch.net/test/read.cgi/tech/1434079972/70

687 名前:蟻人間 mailto:sage [2020/10/11(日) 23:57:26.40 ID:4cQ/GxGI.net]
お題: 整数0〜10の一様分布の乱数を百回発生させて、その統計結果を基に各整数を横軸、回数を縦軸とする棒グラフ(ヒストグラム)を描画し(棒の最大幅32字)、ほぼ一様であることを確かめなさい。

688 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 23:59:14.77 ID:B+MSoWxK.net]
paiza.io は、text, html, json で出力できるのか

html も、部分的なタグだけを書いても動くのか

689 名前:蟻人間 mailto:sage [2020/10/12(月) 00:01:01.03 ID:rx5xRSFU.net]
>>676 訂正。

(誤)各整数を横軸、回数を縦軸とする棒グラフ
(正)各整数を縦軸、回数を横軸とする棒グラフ

690 名前:デフォルトの名無しさん mailto:sage [2020/10/12(月) 01:06:07.97 ID:eqKg5iqj.net]
haskell


import Data.List
import System.Random

trial records = do
x <- randomRIO (0, 1) :: IO Double
return $ (truncate $ x * 11) : records

experience = iterate (>>= trial) (return [0..10])
showrecord (x,y) = let
clsstr = id
$ reverse
$ take 2
$ ( ++ (repeat '0'))
$ reverse
$ show x
barstr = replicate y '*'
in concat [ clsstr," ", barstr,"\n"]

main = do
records <- experience !! 100
putStr $ id
$ concat
$ map showrecord
$ map (\x -> (head x, length $ tail x))
$ group
$ sort
$ records

691 名前:デフォルトの名無しさん [2020/10/12(月) 01:14:47.03 ID:hVCmG980.net]
>>649
Kotlin
https://paiza.io/projects/32aoQfPBUWZ0tnk2E5fg2g

ちょっと変わった感じにしようと思ってこうした。

692 名前:デフォルトの名無しさん [2020/10/12(月) 08:18:41.49 ID:fHHXzdlp.net]
>>676
二項分布になるんじゃないかなあ

693 名前:デフォルトの名無しさん [2020/10/12(月) 16:10:06.27 ID:Wx/lfAmjI]
「頭使えよ貧乏人」に思う、寝てても金入るシステムを作る人
https://www.youtube.com/watch?v=VEB6M_s6abs
バカ不平多し★へつらい生きてるからリストラ対象
https://www.youtube.com/watch?v=carOYI-xNoI
勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは?
https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s
リーダー達の給料が高いのは単純労働者じゃないから
https://www.youtube.com/watch?v=8o9il6dVXGk
できません、自信がありません、無理です★ボンクラにしたのは誰?
https://www.youtube.com/watch?v=54YNXSQsxuM
稼げない人へ★

694 名前:報商材こそ稼げない分野が分かる
https://www.youtube.com/watch?v=x_2nSmlx3og
9割の人は、ただの作業員★自学自習こそ仕事の基本
https://www.youtube.com/watch?v=vIGKDmmBJcs
サラリーマン、10年経てばボンクラ説
https://www.youtube.com/watch?v=QdfVJnVuLlY
[]
[ここ壊れてます]

695 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 15:32:12.46 ID:M1NONSBM.net]
>>658 オーディオ系はシステム依存度が高いから余りサンプルが出てこないね。 WindowsやMacOSなら簡単そうだが
1kHz の音源ファイルを使うのは違反かな?



696 名前:蟻人間 mailto:sage [2020/10/14(水) 17:27:12.50 ID:TNR/wFHW.net]
>>658 C/C++ with Win32
#include <windows.h>
int main(void)
{
Beep(1000, 1000);
}

697 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 17:57:41.59 ID:qOYZdiW9.net]
答え出てきても試しようがない

698 名前:蟻人間 mailto:sage [2020/10/14(水) 18:19:22.34 ID:TNR/wFHW.net]
>>658 Python with Windows
import winsound
winsound.Beep(1000, 1000);

699 名前:蟻人間 mailto:sage [2020/10/14(水) 18:24:27.45 ID:TNR/wFHW.net]
>>658 Python with Mac
import os
os.system('play -n synth 1 sin 1000');

700 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 18:36:34.21 ID:Azmo5ss/.net]
シェル経由でSoX playコマンド呼んでるだけやんけ
Pythonもmacも関係ねぇわ

701 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 19:17:28.35 ID:Y0U/d7P+.net]
OSにつく前置詞はwithじゃなくてonだろハゲ

702 名前:デフォルトの名無しさん [2020/10/14(水) 19:30:29.09 ID:pZU5VHHG.net]
試すと音が出て煩そうだから試す気になれない。

703 名前:蟻人間 mailto:sage [2020/10/14(水) 19:50:02.82 ID:TNR/wFHW.net]
テレビの自主規制音と同じ音だよ。
https://ja.wikipedia.org/wiki/%E8%87%AA%E4%B8%BB%E8%A6%8F%E5%88%B6%E9%9F%B3

704 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 00:45:55.69 ID:BUh584nA.net]
>>688 iOS じゃ、play コマンドがなさそうなんだよな。

705 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:18:37.79 ID:fqrOjoDi.net]
結局このスレで盛り上がるのは環境によらず言語によらず、でも多少は骨のあるようなお題なんだよな
へぇその言語ならそんなにキレイに書けるのかとか普段自分が使ってない言語ではどうやって実現できるのか眺めたりするのが面白い
音鳴らすなんてお題として面白いわけがない



706 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 01:40:28.46 ID:S6IC+plr.net]
ヒント:出題者

707 名前:デフォルトの名無しさん [2020/10/15(木) 11:44:28.12 ID:cDg3UiVL.net]
蟻人間さんへのお題:
文字列を受け取って、RFC 5322にしたがってSubjectヘッダを出力してください(MUST、SHOULDを満たすこと)
文字コードはUTF-8、エンコーディングはBエンコードを使用してください

708 名前:蟻人間 mailto:sage [2020/10/15(木) 13:28:00.67 ID:s1gNbcw/.net]
>>695 Python
text = 'Re: Re: This is a subject text. This is a subject text. This is a subject text.'
if text[0:4] == 'Re: ':
__while text[0:4] == 'Re: ':
____text = text[4:]
__text = 'Re: ' + text
import base64
text = 'Subject: ' + base64.b64encode(text.encode('utf-8')).decode('ascii');
ary = []
while len(text) > 78:
__ary.append(text[0:78])
__text = text[78:]
ary.append(text)
import platform
if platform.system() == 'Windows':
__for item in ary:
____print(item)
else:
__for item in ary:
____print(item, end="\r\n")

709 名前:蟻人間 mailto:sage [2020/10/15(木) 13:49:36.74 ID:IXtC9lOP.net]
>>696 訂正。

(誤) while len(text) > 78:
(正) while len(text) >= 78:

710 名前:デフォルトの名無しさん [2020/10/15(木) 14:30:46.93 ID:cDg3UiVL.net]
>>696
いろいろ違うので・・・メールのソース眺めたが良いです

711 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:14:52.90 ID:QzXinxJa.net]
頭の悪いお題を連投してるやつはやっぱり頭悪いんだな

712 名前:デフォルトの名無しさん [2020/10/15(木) 19:22:03.88 ID:cDg3UiVL.net]
そんなことないと思うけどな
あまり他人の悪口言わない方が良いよ

713 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:28:33.00 ID:QzXinxJa.net]
くっそみたいなお題延々と出し続けてウザいじゃん

714 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:29:59.48 ID:MTvivIgb.net]
>>638なんかはいいと思うんだけどな
eval使えないHaskellerにはいい練習問題になってる

715 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:38:14.90 ID:QzXinxJa.net]
ウェブアプリつくれだのGUIアプリつくれだの酷い事散々言いまくってるじゃん
◆QZaw55cn4cの方がまだマシ



716 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 19:40:03.02 ID:MTvivIgb.net]
まぁ音出せとかカラーバー出せとかはクソお題だな

717 名前:デフォルトの名無しさん [2020/10/16(金) 19:48:26.76 ID:2tllxc0n.net]
お題
自然数nを 2進数にした時、 1が連続する個数の最大値を求める。

20201016 -> 5

718 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 20:25:28.88 ID:YQH8/KbW.net]
haskell

import Data.List

maxConsOne = maximum . map length . filter ((==1).head) . group . unfoldr (\n ->if n == 0 then Nothing else Just (mod n 2, div n 2))

main = print $ maxConsOne $ 20201016
----
5

719 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:03:20.03 ID:a9PKFHNt.net]
>>705 ruby
f = ->(n) {n.to_s(2).chars.chunk(&:itself).map {|k, a| k == '1' ? a.size : 0}.max}

720 名前:デフォルトの名無しさん mailto:sage [2020/10/16(金) 21:35:06.98 ID:XtprH8ZD.net]
>>705 JavaScript
const f = (n = 0) => Math.max(...(n.toString(2).match(/1+/g) ?? ['']).map(m => m.length))

console.log(f(20201016)) //=> 5

721 名前:253 mailto:sage [2020/10/16(金) 23:46:14.30 ID:5gS0lg4h.net]
>>705 Perl5

use List::Util max;
print max map{length} sprintf('%b', 20201016) =~ /(1+)/g;


実行結果
$ perl 18_695_bin1.pl
5

722 名前:デフォルトの名無しさん [2020/10/17(土) 00:12:43.05 ID:7ct7R1y+.net]
>>705 Ruby

p 20201016.to_s(2).split("0").max.size

723 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 00:24:53.85 ID:u2s9P3C4.net]
haskell
無名関数というインチキ使ってしまったので再挑戦バージョン

import Data.List

main = print $ maximum . map sum . group . map (flip mod 2) . takeWhile (/=0) . iterate (flip div 2) $ 20201016

724 名前: mailto:sage [2020/10/17(土) 00:46:45.25 ID:4JRxXuyk.net]
>>705
https://ideone.com/hQRZsi

725 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:58:38.41 ID:S6LboNFt.net]
>>705 Ruby
n = 20201016
nl = 0
while n > 0
nl = ((nc = (n.odd?)? nc + 1 : 0) > nl)? nc : nl
n >>= 1
end
puts nl



726 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 01:59:32.64 ID:u2s9P3C4.net]
>>712
125の時1になった

727 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 02:41:53.51 ID:AbkDXvLA.net]
これだからQZ

728 名前: mailto:sage [2020/10/17(土) 02:53:09.41 ID:4JRxXuyk.net]
>>705
C++: https://ideone.com/7H5HBx

>>712 にはロジックに欠陥がありました

>>714
ご指摘ありがとうございます。

729 名前:703 mailto:sage [2020/10/17(土) 09:22:46.57 ID:S6LboNFt.net]
>>714
自分の >>713
- nl = 0
+ nc = nl = 0

730 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 12:19:37.13 ID:a+zi+w45.net]
>>705 C++
https://wandbox.org/permlink/udZVzwy6pQKbcPa5

731 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 13:46:27.15 ID:eBu6AjRf.net]
>>705 C
https://ideone.com/DwvfL2

732 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 18:57:16.23 ID:S6LboNFt.net]
>>705 Ruby
n = 20201016
i = 0
while n != 0
n &= n << 1
i += 1
end
puts i

733 名前:デフォルトの名無しさん [2020/10/17(土) 19:11:03.54 ID:wXdm0x1E.net]
>>720
うまいやり方だな。それには気付かなかった。

734 名前:デフォルトの名無しさん [2020/10/17(土) 19:29:10.40 ID:wXdm0x1E.net]
>>705
Kotlin script

2進数文字列に変換してから 0 を区切り文字にして分割してその中の一番長い文字列の長さを出すというやり方。

fun max1(n: Int) = n.toString(2).split('0').map { it.length }.max()

println(max1(20201016))

これで 5 が出る。

同じやり方を perl5 で(特にモジュール使わずに)やるとこんな感じ。

perl -e '$n=20201016; $m = (sort { $b <=> $a } map { length($_) } (split /0+/, sprintf("%b", $n)))[0]; print "$m\n"'

同じく5が出る。

735 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:05:12.33 ID:vimxgZ9f.net]
>>705 JavaScript

let num = 20201016
let ans = num.toString(2).split`0`.sort().pop().length

console.log(ans) //=> 5



736 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 20:50:55.84 ID:w8j3NnhR.net]
>>705 octave
https://ideone.com/dO1WZp
f = @(n) max(cellfun(@numel, strsplit(dec2bin(n), '0')));
f(20201016)

737 名前:デフォルトの名無しさん [2020/10/17(土) 20:54:06.81 ID:frzgm+pU.net]
>>705
Perl
https://paiza.io/projects/VO9_CFHPOVbO5iI8uDc__A

738 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:22:21.08 ID:P3PLPttw.net]
いつもRubyの人からなにかしら学ぶことがある

739 名前:デフォルトの名無しさん [2020/10/18(日) 00:42:32.49 ID:nYmbGZmV.net]
ハトにエサを与えないで下さい

740 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 01:06:12.01 ID:qT62bbHa.net]
QZは自分の頭が悪いのをわざわざ周知してもらうためにクソコードを晒すのか
ドMだな

741 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 03:42:01.18 ID:DpwMGaW+.net]
>>720
なるほどな、感心した
n>>1でもいいわけだな

742 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:21:53.35 ID:xWXtsYNK.net]
>>710 のほうが速いと思うが

743 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 04:36:21.54 ID:F/EhVBet.net]
rubyよく分からないけど>>720の方が100倍くらいは速そうに思える

744 名前:デフォルトの名無しさん [2020/10/18(日) 05:53:44.51 ID:28u9FaXE.net]
うん。速そうだね。数値計算しかしてないし。

745 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 10:06:25.57 ID:ARbR7jXS.net]
20201016みたいに桁数が少ないならそうだけど桁数が増えるとルーブが答え×桁数回だからアルゴリズムそのものは遅い
桁数が少ないうちは内部関数しか使ってない利点で早いとは思うけど



746 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 12:07:22.14 ID:GUbLWvo/.net]
>>733

>>710,720 をベンチマークで比較してみた
https://ideone.com/t0ZYLg
https://ideone.com/DUEWmC
20201016 では 5~6倍
巨大な数だと 7000倍以上

747 名前: mailto:sage [2020/10/18(日) 15:53:00.51 ID:xUpUEWAV.net]
>>703
残念ながら、私の出題もイマイチ人気がありませんでした‥‥

748 名前:デフォルトの名無しさん [2020/10/18(日) 21:20:25.30 ID:wanN/5Zd.net]
>>695
Java
https://paiza.io/projects/frlfP3US1doeAO_HZBnLWQ

749 名前:デフォルトの名無しさん [2020/10/18(日) 21:43:52.67 ID:wanN/5Zd.net]
>>678
Java
https://paiza.io/projects/0xfQrdW_qpJoUbOO6ux6wg

750 名前:デフォルトの名無しさん [2020/10/18(日) 22:06:12.69 ID:wanN/5Zd.net]
>>676
Java
https://paiza.io/projects/x3j0kbjqsSoVGNJX5qun2g

751 名前:デフォルトの名無しさん [2020/10/18(日) 22:14:01.64 ID:wanN/5Zd.net]
>>705
Java
https://paiza.io/projects/Eo4-fSXmdnoqjyHOMsi92Q

752 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:45:56.62 ID:F/EhVBet.net]
>>734
x = n
while x != 0
x &= x << 1
i += 1
end
ruby知らないから適当に書いたけど
こんな感じにしないと二回目以降nが0でやってるっぽい
こうすると22倍くらいの差だった

753 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:54:22.98 ID:F/EhVBet.net]
連続してるビット数が多いときはこの方が速くなったけど
すごいごちゃごちゃになった

i = 0
s = 1
x = n
while x != 0
t = x & (x << s)
if t == 0 then
if s == 1 then
i += 1
break
end
s = 1
else
x = t
i += s
s = (s << 1)
end
end

754 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 22:56:30.98 ID:QW0aA1Hz.net]
>>734
GJ

755 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 06:30:07.92 ID:8QFJcUQW.net]
>>705
echo "obase=2; 20201016" | bc | sed 's/./&\n/g' | uniq -c | perl -lane 'if ($M < $F[0]) {$M = $F[0]}; END{print $M}'
5



756 名前:724 mailto:sage [2020/10/19(月) 15:26:08.35 ID:u+lqDWSF.net]
>>740
ご指摘の通りでした
https://ideone.com/DUEWmC
を修正しました

>>720 は 1の連続が多いと弱いですね

757 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 17:41:48.20 ID:Sd7Rn+fr.net]
お題
2^(1/3)を百桁表示せよ

出力
1.2599210498948731647672106072782283505702514647015079800819751121552996765139594837293965624362550941543102560356156652593990240

参考 
a(n+3) = 3*a(n+2) + 3*a(n+1) + an
a(1) = 3, a(2)=3, a(3)=15
で決まる数列について
min (a(n)/a(n+1), a(n+1)/a(n+2), a(n+3)/a(n+3) )
. < 2^(1/3)-1
. max (a(n)/a(n+1), a(n+1)/a(n+2), a(n+2)/a(n+3) )
で lim a(n)/a(n+1) = 2^(1/3)-1となる

758 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 21:36:44.38 ID:gq9726ze.net]
>>743
echo "obase=2; 20201016" | bc | sed 's/0\+/\n/g' | wc -L
でよくね?

759 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:00:17.27 ID:gq9726ze.net]
>>745 Bash

$ echo "scale=100;e(l(2) / 3)" | bc -l
1.25992104989487316476721060727822835057025146470150
79800819751121552996765139594837293965624362550940

760 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:30:56.87 ID:14xSvmON.net]
>>745 dc
dcには平方根の演算子はあるが立方根はないので
c^(1/3) = sqrt(c/sqrt(c/sqrt(c/...)))
と変形して適当に反復

100k[2z333>av/]dsaxp

1.2599210498948731647672106072782283505702514647015079800819751121552\
996765139594837293965624362550941

761 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 23:54:32.40 ID:mPlPc+C9.net]
>>745
参考を誰も参考にしてくれないのにワロタ
参考を元に作ったコード
Haskell

https://ideone.com/ywJPjx

ちなみにrubyのpi.rbが同じテクニック使ってます
そっちは定数係数でない三項間関係の漸化式パージョン

762 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 02:36:31.61 ID:gFGmv7lM.net]
>>746
たしかに

763 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 04:08:13.14 ID:Mf7a0fdE.net]
おっせえじゃん

764 名前:デフォルトの名無しさん mailto:sage [2020/10/20(火) 21:07:35.93 ID:hsuNVmIy.net]
お題:ぼくがかんがえたさいきょうのちょうわへいきん
2変数調和平均 f(x, y) = 2 / (1 / x + 1 / y)
但し xまたはyがゼロの時、f(x, y) == 0
の計算を考える。
Cのdoubleに相当する精度で計算する際に、理論値(≒多倍長精度で計算したものを
double相当に丸めたもの)と一致しない割合(エラー率)をモンテカルロ法で求めよ。
x, yは、正規分布N(0, 1)の絶対値に従うものとする。

発展的なお題:
前掲の調和平均の式を変形し、エラー率の変化を調べよ。例えば、
f(x, y) = 2 * x * y / (x + y)
のエラー率は、前掲の式と比較してどうだろうか?
また、2 / (1 / x + 1 / y)よりエラー率が低い式は在るだろうか?

発展的なお題その2:
x, yがベンフォードの法則に従う場合はどうなるか。
正規分布N(0, 1)の絶対値の場合と比べて、エラー率の順位は入れ替わるだろうか?

765 名前:デフォルトの名無しさん mailto:sage [2020/10/22(木) 01:17:43.95 ID:rA+WIIWx.net]
...but nobody answered



766 名前:253 mailto:sage [2020/10/23(金) 09:17:13.74 ID:7L0FHKID.net]
正規乱数をモンテカルロ法で算出して
doubleと多倍長浮動小数点でそれぞれ計差した2変数調和平均に
差がある率を求めれば良いの?
正規乱数なら書かなくともライブラリにあるんだよね。
あるいは誤り率の計算そのものにモンテカルロ法を使うようなやり方なのかな

767 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 14:48:32.25 ID:oxO2c12D.net]
次のプリーズ

768 名前:デフォルトの名無しさん [2020/10/23(金) 20:02:36.14 ID:Vzf4XOui.net]
お題
乱数を使ってシミュレーションしてください

ジョーカーを除くトランプ52枚から1枚抜き取って箱に入れました
その後、残った51枚から3枚引いて確認したら3枚ともダイヤでした
では最初に抜き取った箱の中が1枚がダイヤである確率はいくらか?

769 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:27:24.17 ID:LovVc5SM.net]
>>756 Ruby

DECK = [*0..51]

def hoge
a, *b = DECK.sample(4) until b&.all?{|v| v % 4 == 0}
a % 4 == 0
end

def fuga(n)
1.0 * n.times.count{hoge} / n
end

p fuga(1e6) # => 0.20414
p 10 / 59 # => 0.20408163265306123

770 名前:デフォルトの名無しさん mailto:sage [2020/10/23(金) 20:46:02.34 ID:LovVc5SM.net]
途中で送信してしまった

99%信頼区間は 0.20414±0.0010382 => [0.2031018, 0.2051782]
理論値は 10/49 = 0.20408163265306123

771 名前:デフォルトの名無しさん [2020/10/23(金) 20:49:11.91 ID:5NWyTruo.net]
確認前後での確率変動を出せ、っていうお題じゃねえのコレ

772 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 01:58:03.71 ID:6bv42JD2.net]
お題
ジョーカー除く52枚のカードがある
スートを表すS,H,D,Cと、A,K,Q,J,X,9,8,7,6,5,4,3,2との2文字からなる文字列でカードの柄を表すこととする。
当然ながら52枚のうちどの2枚も同じ柄でない

この一組のカードを使ってポーカーゲームをする。
すなわち、初手のカード5枚を配られたプレイヤーは、そのうち0枚以上5枚以下のカードを場に捨てて、同じ枚数のカードを残りの山札47枚から引くことができる。
このときどのカードが選ばれるかは無作為であり、プレイヤーは選択できない。

さて、プレイヤーは、初手のカード5枚に対して、最終的に手に残る5枚のカードをポーカーのルールで評価して得られる配点の期待値が最も高くなるように捨て札を決めたい。
入力としてカード5枚が与えられたとき、そのような捨て札の組み合わせを求めるプログラムを記述せよ。

ここで、ポーカーの役と配点の対応はプログラムのパラメータとして組み込んで良い。

773 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 21:09:47.85 ID:xQuuF55s.net]
>>760

// 任意の役の配点を0とする
printf(0);

774 名前:デフォルトの名無しさん [2020/10/24(土) 23:43:41.92 ID:DlOr4HzX.net]
>>756
Java
https://paiza.io/projects/rAHsohR9Q8vhh4kLZnfKAw

775 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 09:27:41.37 ID:dKQi7OF0.net]
>>760 Perl5
https://ideone.com/stLkXf

役のレートは某ゲームのものを使用

ノーペアのとき
全部変える



776 名前:謔1枚残したほうが有利という結果が出てちょっと驚いてる []
[ここ壊れてます]

777 名前:デフォルトの名無しさん [2020/10/25(日) 10:49:49.59 ID:zd7LSfWt.net]
3が1枚来てて、3が3枚残ってるなら、
・手元の3を捨てると、3が来ても何も起こらない
・手元に3を残すと、3が来るとワンペアになる

つまり、残りのカードを引けるかどうか、になる
>>756の亜種

778 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 11:44:16.63 ID:c/nOQwtG.net]
746はシミュレーションも何もただの引っ掛け問題でしょ
モンティホール問題の方が引っ掛け問としては出来が良い

779 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 12:58:23.56 ID:vQGWPLvq.net]
引っかけも何も条件付確率の初歩の初歩の問題だろ

780 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 14:14:17.31 ID:tOCt4zCM.net]
52枚トランプの束で2枚目から4枚目までがダイアであるような場合に限定してその内先頭もダイアであるような場合は全体の何バーセントかを問う問題

781 名前:742 mailto:sage [2020/10/26(月) 01:17:42.67 ID:LimhPZzI.net]
>>754
正規乱数自体は既存のライブラリで(Pythonならnumpy.random.randnとか)。
例えば、最初のお題(2/(1/x+1/y)で計算するやつ)は、34%位のエラー率になります。

782 名前:253 mailto:sage [2020/10/27(火) 00:51:04.61 ID:uqMOOUWw.net]
そうすると俺にはモンテカルロ法をわざわざ使うところが
どこかよく分からないんだよね…

783 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 23:07:51.35 ID:9NNPSda/.net]
結局>>752は数学的にはどういう意味なんやろ
x,yがN(0,1)に従う独立確率変数、
ρ:R→RがDouble型に丸める関数(Doubleのレンジに入らない確率はほとんど0だから無視)、
h(x,y)=2xy/(x+y)
としたとき
P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%
って事?

784 名前:253 mailto:sage [2020/10/28(水) 00:01:38.74 ID:Jno143Es.net]
面白い記号だなそれ。
だが、他の人にも伝わるように書いた方が話が広がってよいよ。
どんなに数学が得意な人でも本当に優秀な人はそうすることができると思う

785 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:17:22.90 ID:3yQQm3er.net]
Φρズと書いてハイロウズと読みます



786 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:21:17.79 ID:n11gpLQR.net]
煽りでもなく素直に疑問なのだが>>770のどこら辺がわからないんだ?
正規分布の下りか?

787 名前:253 mailto:sage [2020/10/28(水) 00:30:53.43 ID:Jno143Es.net]
>>772
マジレスしようと思ったが、そういう問題じゃないんだよ
言葉で書きゃー2,3行のことなんだから
言葉で人に伝わるように書けばいいだろ


と、突き放しちゃ実も蓋も無いので少しマジレスすると
ρ:R→R が写像なのは分かる。
がしかしだ

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

って、お前の教室のホワイトボードじゃねんだぞ。

そんなんでどうっやって世の人と付き合ってんだか…

788 名前:253 mailto:sage [2020/10/28(水) 00:40:32.18 ID:Jno143Es.net]
大体、P()てのは何の関数だ。
どこにでもあるような関数名だが、一般的な関数か?
いや、そんなことの説明は要らない

お前の言いたいことはそんな自己流の式よりも
手短な読んで分かる日本語で書けるはずだ

いいやP()に限らない、お前のレスは一事が万事そんな感じ
一からからやり直せ
そしたら相手してやる

789 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:42:08.54 ID:n11gpLQR.net]
>>775
文脈から明らかにP(A)はAが起こる確率でしょうが
ちなみに俺は>>770じゃないんで

790 名前:253 mailto:sage [2020/10/28(水) 00:43:23.90 ID:Jno143Es.net]
>>776
それ関数じゃないだろ。何で関数として書くんだ。
どういう関数空間なんだ?

791 名前:253 mailto:sage [2020/10/28(水) 00:47:05.09 ID:Jno143Es.net]
簡単なことを
わざわざ難しいことのように書くのは
有能な人のすることではない

792 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 00:51:02.28 ID:n11gpLQR.net]
>>777
落ち着けよお前
P(事象A) := 事象Aが起こる確率 なんて高校数学の範疇だぞ
>>770が殊更ペダンチックには感じない

793 名前:253 mailto:sage [2020/10/28(水) 01:00:33.01 ID:Jno143Es.net]
>>779
別に落ち着いているけど
これか
https://ja.wikipedia.org/wiki/%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87
P()が確立っていつから?
俺が大学の頃まではこういう記法は見た記憶が無いんだけど

P(ρ(h(ρ(x),ρ(y))) ≠ ρ(h(x,y))) ≒ 34%

これは言葉で書いたらもっと分かりやすくならないのか?

794 名前:253 mailto:sage [2020/10/28(水) 01:15:04.26 ID:Jno143Es.net]
結局 >>770

2 / (1 / x + 1 / y)をdoubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合

この一行をわざわざ他の人に分かりにくい式で再度書いているだけのこと

繰り返しだし分かりにくいし
意味(doubleで計算した値と倍長精度で計算したものをdouble相当に丸めたものが一致しない割合)
が欠落している

そういうことに気づきな

795 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:17:27.13 ID:6h0Rpnv/.net]
多分ですけど、あなた以外はそこまでわかりにくい表現だとは感じていないのだと思いますよ



796 名前:253 mailto:sage [2020/10/28(水) 01:19:14.69 ID:Jno143Es.net]
まじかw
そしたら回答山盛りだ

お前もさんも回答よろしくな

797 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:20:24.09 ID:6h0Rpnv/.net]
>>752の意味するところが数学的に自明になればおのずと回答も付くでしょう

798 名前:253 mailto:sage [2020/10/28(水) 01:20:47.31 ID:Jno143Es.net]
蛇足だが、あの式で意味がわかった上で
まさか回答できなかったら、単なる無能だからな

799 名前:253 mailto:sage [2020/10/28(水) 01:27:14.39 ID:Jno143Es.net]
>>784
参考までにあなたは今までどのような回答を投稿されましたか?

800 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:29:09.84 ID:3yQQm3er.net]
>>771
> 面白い記号だなそれ。

で、結局面白い記号って何だったの?

801 名前:253 mailto:sage [2020/10/28(水) 01:30:24.94 ID:Jno143Es.net]
ふふ、それは
ヒ・ミ・ツ

802 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 01:43:43.54 ID:3yQQm3er.net]
教科書ないから高校数学 確率で一番上に出たやつ。
https://studysapuri.jp/contents/high/article/subject/sp/math00003.html

やっぱ高校の教科書に載ってたよなあww

仮に載ってなかったとして大学で使う書籍にもP載ってないって?w

> 俺が大学の頃まではこういう記法は見た記憶が無いんだけど

803 名前:253 mailto:sage [2020/10/28(水) 01:56:33.39 ID:Jno143Es.net]
ゆとり以降だなそりゃ

804 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 02:11:35.07 ID:d52OC3St.net]
恥の上塗りするくらいなら黙ってればいいのに

805 名前:253 mailto:sage [2020/10/28(水) 02:16:39.09 ID:FRCNqyyj.net]
じゃあ何か自慢の回答でもしてよ



806 名前:742 mailto:sage [2020/10/28(水) 05:10:48.17 ID:MEeLXnFm.net]
>>770
2/(1/x+1/y)

2*x*y/(x+y)
と変形した場合だと、36%位です(100万回試行してみた)。

807 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 06:02:02.77 ID:W3KKdO+Q.net]
>>752 C
https://ideone.com/iPEwg8
2 / (1 / x + 1 / y) のエラー率は 38.5%
2 * x * y / (x + y) のエラー率は 40.4%
と出た

808 名前:742 mailto:sage [2020/10/28(水) 12:23:39.00 ID:jim4KuYP.net]
>>794
h0の計算は、xdやxdをlong doubleにcastする感じで!
>double h0 = ( xl == 0. || yl == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));

809 名前:742 mailto:sage [2020/10/28(水) 13:16:35.16 ID:jim4KuYP.net]
間違えました
double h0 = ( xd == 0. || yd == 0. ? 0. : 2. / (1.L / xd + 1.L / yd));

810 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:16:48.93 ID:GFOWX4AY.net]
お題:言語機能のみを使い単方向リストを実装しメソッドpush

811 名前:とpopを実装せよ
pushはリスト末尾にノードをプッシュし、popはリスト末尾からノードをポップする
ノードの持つ値は整数とする
[]
[ここ壊れてます]

812 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 00:52:01.80 ID:wtq/xrTf.net]
複数pushできるの?
popも個数指定できるの?一個ずつ?
pushの戻り値はリスト自身?入れた値?成否?

813 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 01:01:50.46 ID:GFOWX4AY.net]
>>797
>>798
pushもpopも値は1つずつ
pushの戻り値はなんでもいい

814 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 10:47:03.25 ID:jsAu6jIB.net]
>>797 js
入出力のサンプルケース書いてないやつ絶対自分はやってないだろ

class SinglyLinkedList {
push(value) {
this.head = { next: this.head, value }
}
pop() {
if (!this.head) return
this.head = this.head.next
}
str() {
let { head } = this, s = ""
while (head) {
s += head.value + ", "
head = head.next
}
return s
}
}

815 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:03:58.95 ID:GFOWX4AY.net]
>>800
なんで>>797,799の仕様でこんな実装になるんだ?
お題ちゃんと読んでる?



816 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:11:08.30 ID:moZIRBYC.net]
>>801
「言語機能のみを使い」は引っかかる表現だったけどそれのことかい?

817 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:16:22.08 ID:95aSRVZj.net]
オレもこの「言語機能のみを使い」がわからなかった
「ライブラリ関数使うな」か「文字列操作関数のみを使い」かどっちかかなと
わからんから様子見

818 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:18:16.67 ID:GFOWX4AY.net]
>>802
>>800
は787の仕様としてただしかったわ
すまんな
こっちのお題の定義があいまいすぎたらしい
言語機能は問題ない

819 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:21:59.18 ID:GFOWX4AY.net]
>>803
ライブラリ使うなって言いたかった
あとお題提出前の実装については>>800に比べるとかなり冗長な実装をしてある
ここに晒す気はないが

820 名前:デフォルトの名無しさん [2020/10/29(木) 12:33:09.26 ID:AOpu1Zek.net]
stdlib.h使わずに作るの?

821 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:36:05.93 ID:jsAu6jIB.net]
>>804
まあええわ
俺もclassは久々に使ったけどできれば使わずに実装したかったわ

822 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 12:50:57.59 ID:GFOWX4AY.net]
>>807
こっちの実装したコードに比べるとそっちのコードはえらくシンプルなんだよな
軽くショックだわ
>>801みたいな口きいてすまんかったな

823 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:24:14.72 ID:GFOWX4AY.net]
>>806
リスト以外の実装は自由の想定
stdio.hも使っておk

824 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 13:27:39.52 ID:GFOWX4AY.net]
>>806
C/C++などの言語はmallocなどを使っても良いことにする

825 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 15:09:10.20 ID:dNWGwdex.net]
Haskellみたいな純粋関数だとそもそも標準ライブラリだけだと“状態”を作るのも難しいんだよな
同じ表現は永遠に同じ答えを返すからスタックの“状態”を変化させるというのがそもそもできない
それをなんとかするのに“モナド”というのがあるんだけど状態を処理する“ステートモナド”は標準ライブラリではないんだよな
ほとんど“準標準”だけど



826 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 16:24:06.73 ID:95aSRVZj.net]
State モナドを“準標準”と認めてもらえるなら簡単
Haskell

import Control.Monad.State

pop :: State [a] a
pop = do
a <- get
modify tail
return $ head a

push :: a -> State [a] ()
push x = do
modify ((x :))
return ()

test = do
push 1
push 2
push 3
a <- pop
b <- pop
c <- pop
return ([a,b,c])

main = print $ evalState test []
---
出力
[3,2,1]

827 名前: mailto:sage [2020/10/29(木) 19:01:42.56 ID:7aED6VYA.net]
>>797
双方向リストの方が、後々いろいろ流用できてありがたいんですけど、それでも端方向リストでインプリしないといけないのですか?

828 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:02:59.18 ID:c1P6mcgH.net]
持て余すくらいなら「なるべく使わない」とか評価基準を示すだけにしとけばいいのに

829 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:32:46.09 ID:EQ9lcE/o.net]
>>803
全く同じこと思ってたわw

830 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:34:40.84 ID:EQ9lcE/o.net]
>>807
どうでもいいけどお前のIDもjsだsな

831 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 19:40:10.12 ID:Pf0NRL7D.net]
>>797 Brainfuck

push: <[>],
pop: <[>]<[-]<

832 名前:デフォルトの名無しさん [2020/10/29(木) 20:59:03.61 ID:zgfLAX1f.net]
>>797
push,popってリストじゃなくてスタックの機能じゃ?
リストにさせるなら、先頭に追加してく方が速くて楽なのに。
push xs a = a:xs
pop (x:xs) = (xs,x)
反転させたいなら最後の最後にすべきだよ。

Haskell

― 使用例用main関数
main = do pushlist <- (return.push (Cons 1 (Cons 2 Null))) 3
(poplst, popval) <- (return.pop) pushlist
print pushlist
print popval
print poplst

― ここからお題のコード(整数に限定じゃないとダメならdataのList a/Cons aのaをIntに)
data List a = Null | Cons a (List a) deriving (Show)

push xs a = xs +++ (Cons a Null)

pop xs = (myinit xs, mylast xs)

Null +++ ys = ys
(Cons x xs) +++ ys = Cons x (xs +++ ys)

myinit (Cons x Null) = Null
myinit (Cons x xs) = Cons x (myinit xs)

mylast (Cons x Null) = x
mylast (Cons _ xs) = mylast xs

833 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:10:47.05 ID:wtq/xrTf.net]
>>797 JavaScript
class List {
#data = []
push(n) {
this.#data = [n, this.#data]
return this
}
pop() {
const [head, tail] = this.#data
if (tail) this.#data = tail;
return head
}
toArray() { return this.#data.flat(Infinity) }
toString() { return String(this.toArray()) }
toJSON() { return this.toArray() }
}

const list = new List
list
.push(0)
.push(7)
.push(2)
console.log('文字列: ' + list) //=> 文字列: 2,7,0
console.log('JSON: ' + JSON.stringify(list))
//=> JSON: {"test":[2,7,0]}
list.pop() //=> 2
list.pop() //=> 7
list.pop() //=> 0
list.pop() //=> undefined

834 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 21:13:39.21 ID:wtq/xrTf.net]
うわ
console.log('JSON: ' + JSON.stringify({'test': list})) //=> JSON: {"test":[2,7,0]}
だった

835 名前:デフォルトの名無しさん [2020/10/29(木) 23:09:01.60 ID:MaNQDMIt.net]
>>813
お題
双方向リストをC89で実装してください



836 名前:253 mailto:sage [2020/10/29(木) 23:20:15.73 ID:UgpGZWA4.net]
>>817

837 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:24:39.19 ID:3o7XtB23.net]
>>797 ocaml
https://ideone.com/8ceFxk
type 'a _list = Nil | Cons of 'a * 'a _list
exception EmptyListException
let push xs x = Cons(x, xs)
let pop = function Nil -> raise EmptyListException | Cons (x, c) -> (x, c)
let rec each f = function Nil -> () | Cons (x, xs) -> f x; each f xs
let x, xs = pop (push (push (push Nil 1) 2) 3)
let () = print_int x; each print_int xs

838 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:26:08.36 ID:GFOWX4AY.net]
>>813
双方向書きたいってことなら書けば
お題は単方向だけど

839 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 00:06:20.24 ID:aDtUVDPI.net]
>>812を改良?
State [Int] だとあらかじめ用意した一個のstackしか使えない
噂に聞いたことあつたST monadで複数のスタック使えるように改造
Haskell

import Control.Monad
import Control.Monad.ST
import Data.STRef

data Stack a = Empty | N { car :: a, cdr :: Stack a } deriving (Show)

push stk val = modifySTRef stk (N val)
pop stk = car <$> readSTRef stk <* modifySTRef stk cdr

main = print $ runST $

840 名前: do
sA <- newSTRef Empty
sB <- newSTRef Empty
push sA 'o' >> push sA 'o' >>push sA 'f'
push sB 'r' >> push sB 'a' >> push sB 'b'
a1<-pop sA
a2<-pop sA
a3<-pop sA
b1<-pop sB
b2<-pop sB
b3<-pop sB
return [a1,a2,a2,b1,b2,b3]
----
出力
"foobar"
[]
[ここ壊れてます]

841 名前:253 mailto:sage [2020/10/30(金) 00:07:47.66 ID:hMjmzAXb.net]
>>797 Perl5

公式マニュアルに書かれている通りsplice関数を使ってpush, popを記述できる。
 splice(@a,@a,0,$x); # push(@a, $x)
 splice(@a,-1);    # pop(@a)
なんだけどspliceを使わず言語のstatementだけでpush, pop関数を記述すると…こんな感じ

use v5.18;
use feature 'signatures';
no warnings "experimental::signatures";
sub Push($a, $x) {
 @$a = (@$a, $x);
}
sub Pop($a) {
 my @a = @$a;
 my $b = $a[-1];
 @$a = @a[0..$#a-1];
 $b;
}
my @s = (1,2,3); # test main
Push(\@s, 4);
say "@s";
my $y = Pop(\@s);
say $y;


実行結果
~ $ perl 18_787_push_pop.pl
1 2 3 4
4
1 2 3

842 名前:253 mailto:sage [2020/10/30(金) 00:09:56.81 ID:hMjmzAXb.net]
>>826
say $y;
の下に書いてあった最後の行
say "@s";
をコピペしそびれた…orz

843 名前:253 mailto:sage [2020/10/30(金) 00:22:38.86 ID:hMjmzAXb.net]
>>826 Pop関数はこっちの方がいいな、無駄なコピーもないし。

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
 $b;
}

844 名前:253 mailto:sage [2020/10/30(金) 00:32:51.98 ID:hMjmzAXb.net]
>>828 deleteは削除したスカラー値を返すわ。だから以下でいいんだ

sub Pop($a) {
 my $b = @$a[-1];
 delete @$a[-1];
}

845 名前:253 mailto:sage [2020/10/30(金) 00:34:30.90 ID:hMjmzAXb.net]
>>829 my $b = @$a[-1]; 不要だった…orz

sub Pop($a) {
 delete @$a[-1];
}



846 名前:デフォルトの名無しさん [2020/10/30(金) 00:50:28.84 ID:9RgBA+ge.net]
>>797
Java
https://paiza.io/projects/JKwjWCxSc6dHv_ItEaqwlQ

847 名前:デフォルトの名無しさん [2020/10/30(金) 02:22:50.19 ID:9RgBA+ge.net]
>>821
Java
https://paiza.io/projects/wtaAasQr_Nu5Zw2D1KoPwg

848 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 07:07:30.18 ID:cChJ6BWU.net]
>>822
あ?

849 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 23:30:40.86 ID:hYhF3+Ov.net]
Brainfuck読めないわ
覚えようかな

850 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:49:55.42 ID:QnYm1bfS.net]
お題
与えられた文字列を一文字ずつ見ていき"trick"と"treat"の5文字でどちらが先に揃うか判定してください(順序込み)
どちらもヒットしないときは考慮しなくていいです

treakOrTreat("trick or treat")
// => trick
treakOrTreat(". tr ick")
// => trick
treakOrTreat("ttrriecatk")
// => treat
treakOrTreat("tri kc eat")
// => treat
treakOrTreat("my money")
// => none

851 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 13:51:26.24 ID:QnYm1bfS.net]
>>835 js(self)
function treakOrTreat(text) {
const [tri] = /t.*r.*i.*c.*k/.exec(text) || []
const [tre] = /t.*r.*e.*a.*t/.exec(text) || []
if (!tri && !tre) return 'none'
if (!tri) return 'treat'
if (!tre) return 'trick'
return tri.length < tre.length ? "trick" : "treat"
}

852 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 14:54:50.69 ID:HHhQTZ6R.net]
関数名のミススペリングは修正していいですか

853 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:02:04.99 ID:QnYm1bfS.net]
ごっつtypoしてたすまんFIXME

854 名前:デフォルトの名無しさん [2020/10/31(土) 15:07:31.21 ID:DmLmDhBA.net]
>>835 Common Lisp
https://ideone.com/L8wigO

855 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:33:31.91 ID:I05R+wBh.net]
相変わらずキモいなあ、いつもの勝手に認定キッズ
ミュートにしてるという情報から相手が雑魚であるというぶっ飛んだ推論をする知性の欠片も持ち合わせない負け組



856 名前:デフォルトの名無しさん [2020/10/31(土) 15:36:09.16 ID:DmLmDhBA.net]
>>835 Common Lisp
https://ideone.com/qHuipq

>>839は無駄な条件判定(二つめの (null a))があったので修正

857 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 15:44:11.18 ID:pGrSKCPz.net]
>>835 JavaScript
function trickOrTreat(str = '') {
const trick = [...'trick']
const treat = [...'treat']
let result = 'none'
for (const c of str) {
if (c === trick[0]) trick.shift()
if (c === treat[0]) treat.shift()
if (!trick.length || !treat.length) {
result = trick.length ? 'treat' : 'trick'
break;
}
}
console.log(result)
}

858 名前:デフォルトの名無しさん [2020/10/31(土) 15:54:22.22 ID:i0S/O8KX.net]
>>797
C
https://paiza.io/projects/7O3xqQfCoYOhAz-48TxxWw

859 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 16:42:52.45 ID:B0ELcd4k.net]
>>835
Haskell

https://ideone.com/2Rb2sz

860 名前:デフォルトの名無しさん [2020/10/31(土) 17:10:35.46 ID:M62mfk9p.net]
>>797
Perl
https://paiza.io/projects/E1ha4EgvaVhalIRuJ_To-g

861 名前:デフォルトの名無しさん [2020/10/31(土) 17:42:14.32 ID:/zmNVLOW.net]
>>797
Kotlin
https://paiza.io/projects/mB7s1uC_4FJk1MFTDpLYsA

862 名前:デフォルトの名無しさん [2020/10/31(土) 21:33:28.24 ID:g64iH70d.net]
>>835
Java
https://paiza.io/projects/jCNOEenrSmdOMXo6Fl2wyQ

863 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 21:58:58.47 ID:t2sIU1o6.net]
>>835 Ruby
def trickOrTreat( str )
trick = str.match( /\A.*?t.*?r.*?i.*?c.*?k/ )
treat = str.match( /\A.*?t.*?r.*?e.*?a.*?t/ )
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick[0].size < treat[0].size)? 'trick' : 'treat'
end

[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}

864 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 22:19:45.63 ID:B0ELcd4k.net]
>>844
改定
やはりHaskellerがこのお題でparsec使わないのはダメという事で

Haskell

import Text.ParserCombinators.Parsec

makeP cs = foldl1 (<>) $ map (\c -> (many $ noneOf [c]) <> (return <$> anyChar) ) cs :: Parser String

first xs ys = case (runParser (makeP xs) () "" ys) of
Left _ -> (1, 0)
Right x -> (0, length x)

trickOrTreat x = case compare (first "trick" x) (first "treat" x) of
LT -> "trick"
GT -> "treat"
otherwise -> "Happy Halloween"

main = do
mapM_ (print.trickOrTreat) ["trick or treat", ". tr ick","ttrriecatk","tri kc eat","my money"]

865 名前:デフォルトの名無しさん [2020/10/31(土) 22:49:38.34 ID:pe+8/Oyn.net]
>>835
C

#include<stdio.h>

char* trickOrTreat(char*s, char*tk, char*tt){
if(!*tk)return "trick";
if(!*tt)return "treat";
if(!*s) return "none";

if(*s == *tk)tk++;
if(*s == *tt)tt++;

return trickOrTreat(s+1, tk, tt);
}

int main(void){
char* str[] = {"trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",};
const int size = sizeof(str)/sizeof(str[0]);

char tk[] = "trick";
char tt[] = "treat";

int i;
for(i=0; i<size; i++){
printf("%s\n", trickOrTreat(str[i], tk, tt));
}

return 0;
}



866 名前:253 mailto:sage [2020/10/31(土) 22:58:55.98 ID:i+h07tFB.net]
>>835 Perl5

for (<DATA>) {
 chomp;
 %h = map{$_ => [split'']} qw{trick treat};
 $k = 'none';
 for $c (split'') {
  for (keys %h) {
   $r = $h{$_};
   shift(@$r) if $c eq $$r[0];
   unless (@$r) { $k = $_; goto L }
  }
 }
L: print "$_ -> $k\n";
}
__DATA__
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money

実行結果
~ $ perl 18_825_trickOrTreat.pl
trick or treat -> trick
. tr ick -> trick
ttrriecatk -> treat
tri kc eat -> treat
my money -> none

867 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:10:35.06 ID:8FYB/kmH.net]
>>851
なんでお前ずっとコテハンつけてんの?

868 名前:253 mailto:sage [2020/10/31(土) 23:20:38.29 ID:i+h07tFB.net]
>>852 IPアドレスがたまに変わるのと自分のレスを見分けやすくするため。固定ではなく番号はたまに変えてる
気にしないで

869 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:26:17.77 ID:OVAIfmUR.net]
>>797 c
https://ideone.com/9grZQe

870 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:27:34.12 ID:wd4K8eMC.net]
>>853
専ブラ使えばいいのに

871 名前:253 mailto:sage [2020/10/31(土) 23:32:26.70 ID:i+h07tFB.net]
>>855
IPアドレスが変わったり日にちがたった自分のレスを簡単に表示し分けられる専ブラで良いのある?
出来ればLinuxで。ちなStyleは好みではない

872 名前:253 mailto:sage [2020/10/31(土) 23:38:27.89 ID:i+h07tFB.net]
>>854
教科書に載っているようなきれいなコード書くね

873 名前:デフォルトの名無しさん mailto:sage [2020/10/31(土) 23:54:01.35 ID:OVAIfmUR.net]
>>857
サンクスコ

でも、引数の評価順については正直お行儀悪いんで
勉強してるみんなはそのへん各自ぐぐってみてね

874 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 00:59:27.52 ID:KABEK1ar.net]
>>835
Ruby

text = <<'TEXT'
trick or treat
. tr ick
ttrriecatk
tri kc eat
my money
TEXT

# 配列化
Trick = "trick".chars
Treat = "treat".chars

次へ続く

875 名前:849 mailto:sage [2020/11/01(日) 01:00:32.73 ID:KABEK1ar.net]
>>859
の続き

def find_index( str, original )
idx_2 = 0

str.each_char.with_index do |char, idx| # 1文字ずつ処理する
idx_2 += 1 if char == original[ idx_2 ]
return idx if idx_2 == original.length # すべての文字が一致
end
nil
end

results = text.each_line.map do |line|
trick = find_index( line, Trick )
treat = find_index( line, Treat )

if !( trick || treat ) then "none"
elsif !trick then "treat"
elsif !treat then "trick"
elsif trick < treat then "trick"
elsif trick > treat then "treat"
else "same"
end
end

p results
#=> ["trick", "trick", "treat", "treat", "none"]



876 名前:デフォルトの名無しさん [2020/11/01(日) 01:29:12.30 ID:17LNcGyj.net]
>>835
Kotlin
https://paiza.io/projects/pLXGwy1V_3FlM4eqH2w5tg

877 名前:デフォルトの名無しさん [2020/11/01(日) 01:49:31.61 ID:17LNcGyj.net]
>>835
C
https://paiza.io/projects/hjm6unXa-mcUi6cx1mTJ9g

878 名前:838 mailto:sage [2020/11/01(日) 12:58:01.92 ID:g/v4ZA9S.net]
>>835 Ruby
正規表現を捨てて index+inject に
def trickOrTreat( str )
trick = 'trick'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
treat = 'treat'.chars.inject(-1){|r,ch| break r unless r = str.index( ch, r+1 ); r }
return 'none' unless trick or treat
return 'trick' unless treat
return 'treat' unless trick
return (trick < treat)? 'trick' : 'treat'
end

[ "trick or treat", ". tr ick", "ttrriecatk", "tri kc eat", "my money",
"treat or trick", "treat or trick t",
].each{|s|
puts trickOrTreat( s )
}

879 名前:蟻人間 mailto:sage [2020/11/01(日) 14:40:36.23 ID:wOVD56Lv.net]
お題:大阪都構想が実現すると、現在の大阪市は消滅すると予想される。都構想実現前の住所を実現後の住所に変換しなさい。

880 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:05:05.76 ID:+nQAPqAx.net]
次行ってみよう

881 名前:蟻人間 mailto:sage [2020/11/01(日) 16:41:27.74 ID:wOVD56Lv.net]
参考:https://www.asahi.com/articles/ASNBS733ZNBMPTIL00Q.html

882 名前:蟻人間 mailto:sage [2020/11/01(日) 16:44:49.88 ID:wOVD56Lv.net]
これも:https://maidonanews.jp/article/13879682

883 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 16:51:14.83 ID:VQGUeFT5.net]
お前らは競技プログラミングとかやってる?

884 名前:253 mailto:sage [2020/11/01(日) 16:54:48.84 ID:I8lyxV1q.net]
>>868
やろうとしたことはあるがまだ未経験
何か受験勉強みたいになっちゃってるコンテストには魅力を感じない
でも世界トップレベルは年間4000万くらい賞金稼ぐとい話をきいてそういうのにはちょっと惹かれる

885 名前:蟻人間 mailto:sage [2020/11/01(日) 17:00:25.77 ID:wOVD56Lv.net]
>>865
あんまりバカにするなよ。住所変換できないと大坂大混乱になるよ。



886 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:18:29.18 ID:EgIfcLXC.net]
バカにしてるのはおまえ
他所の住所変更地の状況知らんのか?50年前の住所でも年賀届くわ
数年〜十数年或いはそれ以上旧住所で配送可能。舐めすぎ

887 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:31:11.77 ID:+nQAPqAx.net]
>>870
ここでそのお題といても大混乱が回避できるわけでもなし
そういう問題じゃなくてそろそろ自分にいい問題作るセンスがない事自覚すべき

888 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 17:35:33.69 ID:S9fsJ+JS.net]
データ引っ張ってくるだけじゃん
ただの知識問題は悪問

889 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:32:31.31 ID:erpRcPg0.net]
やってみたが
競技系はプログラミングのスキル向上には役立たんよ

890 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 18:50:53.93 ID:4+fLUvoM.net]
>>867
このサイト気持ち悪いな

891 名前:蟻人間 mailto:sage [2020/11/01(日) 19:52:59.24 ID:wOVD56Lv.net]
>>875
太陽風を読めよ。

892 名前:デフォルトの名無しさん mailto:sage [2020/11/01(日) 19:57:24.03 ID:wWMHVvTS.net]
>>876
消えろ

893 名前:蟻人間 mailto:sage [2020/11/01(日) 20:04:08.68 ID:wOVD56Lv.net]
>>877
お前がえろ

894 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 00:22:13.64 ID:bEILeQs7.net]
>>835 octave
https://ideone.com/BkciwT

895 名前:デフォルトの名無しさん [2020/11/02(月) 04:28:03.49 ID:2/AbCXtL.net]
>>835
Perl
https://paiza.io/projects/Ol_sOAbb2ZYW4hIDFLj2wQ

正規表現使ってみました。



896 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:45:05.89 ID:BfD57ecO.net]
"trick"と"treat"を受理するオートマトンを作って
入力文字列から1文字ずつ与えて状態遷移(または待機)させていく
末尾まで先に受理されたほうを答えとする
みたいなことだけ考えた

897 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 04:48:28.19 ID:BfD57ecO.net]
けど実装すると無駄にでかくなりそう

898 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:04:22.80 ID:/BOVDIIM.net]
オートマトンって言語でなんか表現できる構造ある?

899 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 10:41:03.91 ID:5JhQS2vf.net]
正規表現で表現できる⇔オートマトンで受理できる
でしょ?
今回なら入力xに対し出力がtrickである場合を

[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*k.*
|[^t]*t[^r]*r[^ie]*i[^ce]*c[^ke]*e[^ka]*k.*
...
(10パターン)
....

と正規表現だけで表現できてしまう

900 名前:蟻人間 mailto:sage [2020/11/02(月) 12:23:25.05 ID:iXWhExA8.net]
お題:パラボラアンテナが理論上の焦点に電波を集めることを示しなさい。

パラボラアンテナの半径を100とし、原点を中心にx軸上に焦点が来るように配置する。x軸と平行に電波がアンテナに入ってきて、入射角と反射角が等しくなるように電波が反射する。
このとき、どの場所で反射しても、反射した電波を表す直線が理論上の焦点に十分近づくことを示せ。

901 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:23:58.15 ID:UfGVYnOo.net]
まじでセンスないな

902 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 12:36:09.22 ID:zo3ZJgwO.net]
パラボラアンテナの半径ってどこのことだよ

903 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:43:55.18 ID:gftnEWfN.net]
common lisp
https://ideone.com/GZ8Wbt
うーん微妙

904 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 14:26:45.62 ID:vIueiXdU.net]
>>835 .bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" echo none&exit /b
set "STR=%~1"
set TRICK=trick
set TREAT=treat
set /a n=0, k=0, t=0
:WHILE
if /i "!STR:~%n%,1!"=="!TRICK:~%k%,1!" if %k% LSS 4 ( set /a k+=1 ) else echo trick&exit /b
if /i "!STR:~%n%,1!"=="!TREAT:~%t%,1!" if %t% LSS 4 ( set /a t+=1 ) else echo treat&exit /b
set /a n+=1
if not "!STR:~%n%,1!"=="" goto :WHILE
echo none&exit /b

905 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:10:30.68 ID:Ac4tp6ZL.net]
>>835
Haskell
https://ideone.com/wg9JbO

iimport Text.ParserCombinators.Parsec

makeP = mconcat . map ( manyTill anyChar . char )

lastInd x s = case ( runParser ( makeP x ) () "" s ) of
Left _ -> ( [ 2, 0 ] , x )
Right y -> ( [ 0, length $ x ++ y ], x )

trickOrTreat x = snd $ minimum [
lastInd "trick" x,
lastInd "treat" x,
( [1,0], "Happy Halloween" ) ]

main = mapM_ ( print . trickOrTreat ) [
"trick or treat",
". tr ick",
"ttrriecatk",
"tri kc eat",
"my money" ]



906 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:01:54.49 ID:hORytTpS.net]
>>835
#include <stdio.h>
#include <string.h>

static void
tot (char *p)
{
int i = 0, j = 0;
if ((p = strchr (p, 't')) && (p = strchr (p + 1, 'r')))
while (*++p && !(*p == "ick"[i] && ++i == 3) && !(*p == "eat"[j] && ++j == 3)) ;
printf ("%s\n", (i == 3) ? "trick" : ((j == 3) ? "treat" : "none"));
}

int
main ()
{
tot ("trick or treat");
tot (". tr ick");
tot ("ttrriecatk");
tot ("tri kc eat");
tot ("my money");
}

907 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:55:30.38 ID:0Q72CsT7.net]
お題
アスペクト比X:Y、L[inch]のディスプレイの
幅Wと高さHをcm単位でそれぞれ求めよ

[入力]
X Y L

[出力]
W H ※cm単位で小数第1位まで出力

[例]
16 9 40
=> 88.6 49.8

64 27 29
=> 67.9 28.6

3 4 10.2
=> 15.5 20.7

908 名前:869 mailto:sage [2020/11/02(月) 20:41:57.79 ID:PEXljxha.net]
>>835 octave
https://ideone.com/TknUHT
・残り文字数数える関数fがガバガバだったので修正

909 名前:デフォルトの名無しさん [2020/11/02(月) 20:50:30.27 ID:LqVECFSh.net]
>>892
Java
https://paiza.io/projects/k8RErATdGPNrkP2gRrOmSw

910 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 20:55:38.75 ID:UfGVYnOo.net]
>>892
実用的じゃん

911 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:39:44.31 ID:PEXljxha.net]
>>892 octave
https://ideone.com/un3EHy

912 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:00:22.68 ID:PEXljxha.net]
>>892 octave
https://ideone.com/kETWpz
・若干の変更

913 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:02:25.78 ID:i1cL0pVh.net]
>>885
消えろ

914 名前:デフォルトの名無しさん [2020/11/02(月) 22:12:37.48 ID:2/AbCXtL.net]
>>892
Perl
https://paiza.io/projects/3i_gH0-CGf93OpsUWJzFVg

915 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 23:19:41.46 ID:ZpVsHyOp.net]
>>892 JavaScript
const f=(x, y, l) => [x, y].map(i => (i * 2.54 * l / Math.sqrt(x ** 2 + y ** 2)).toFixed(1))
console.log(...f(16, 9, 40))
console.log(...f(64, 27, 29))
console.log(...f(3, 4, 10.2))



916 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 00:18:12.81 ID:1BjkDVvF.net]
>>892

Hadkell

cmpin =2.54
r10 = (/10).fromInteger.round.(*10)
toWH (x, y, sz) = let
arg = atan2 y x
diag = sz * cmpin
in ( r10 $ (cos arg) * diag , r10 $ (sin arg) * diag )

main = mapM_ ( print . toWH) [
(16, 9, 40),
(64,27,29),
(3,4, 10.2) ]

917 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 01:33:31.56 ID:psuX0FGw.net]
お題
{1,2,3,4,5,6,7,8}
を幾つかの共通部分を持たない空でない集合にわけるやり方を完全列挙
例えば
{1,6}+{2,8}+{3,4,5,7}

{2,8}+{1,6}+{3,4,5,7}
は同じやり方になるので二重カウントしないこと

918 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 02:32:26.13 ID:yN+x511c.net]
>>902
[1..8]は流石にtoo large
haskell

import Data.List

parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \\ ys ]

main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140

919 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:10:12.54 ID:WKYb8LN0.net]
>>903
きれいだな

920 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:07:39.02 ID:psuX0FGw.net]
A:={1,2,3,4,5,6,7,8};
A_1:={A};
A_2:={ {a,b} \subset 2^A | a+b=A,~a+~b=A };
A_3:={ {a,b,c} \subset 2^A | a+b+c=A,~a+~b+~c=A };
A_4:={ {a,b,c,d} \subset 2^A | a+b+c+d=A,~a+~b+~c+~d=A };
A_5:={ {a,b,c,d,e} \subset 2^A | a+b+c+d+e=A,~a+~b+~c+~d+~e=A };
A_6:={ {a,b,c,d,e,f} \subset 2^A | a+b+c+d+e+f=A,~a+~b+~c+~d+~e+~f=A };
A_7:={ {a,b,c,d,e,f,g} \subset 2^A | a+b+c+d+e+f+g=A,~a+~b+~c+~d+~e+~f+~g=A };
A_8:={ {a,b,c,d,e,f,g,h} \subset 2^A| a+b+c+d+e+f+g+h=A,~a+~b+~c+~d+~e+~f+~g+~h=A};
B:=A_1+A_2+A_3+A_4+A_5+A_6+A_7+A_8;
count[expand B];

1:{{1},{2},{3},{4},{5},{6},{7},{8}}
2:{{1},{2},{3},{4},{5},{6},{7,8}}
3:{{1},{2},{3},{4},{5},{7},{6,8}}
4:{{1},{2},{3},{4},{5},{8},{6,7}}
5:{{1},{2},{3},{4},{5},{6,7,8}}
6:{{1},{2},{3},{4},{6},{7},{5,8}}
7:{{1},{2},{3},{4},{6},{8},{5,7}}
8:{{1},{2},{3},{4},{6},{5,7,8}}
9:{{1},{2},{3},{4},{5,6},{7,8}}
10:{{1},{2},{3},{4},{7},{8},{5,6}}
11:{{1},{2},{3},{4},{7},{5,6,8}}
12:{{1},{2},{3},{4},{5,7},{6,8}}
...中略....
4135:{{2,7,8},{1,3,4,5,6}}
4136:{{3,7,8},{1,2,4,5,6}}
4137:{{4,7,8},{1,2,3,5,6}}
4138:{{5,7,8},{1,2,3,4,6}}
4139:{{6,7,8},{1,2,3,4,5}}
4140:{{1,2,3,4,5,6,7,8}}

921 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:10:16.73 ID:psuX0FGw.net]
美しさだけなら某集合論用処理系に勝る
ものはないと思うが....
>>901の短時間回答能力とHaskelの潜在能力は
驚嘆すべきかも

922 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 09:15:47.91 ID:psuX0FGw.net]
間違ってたときのコード貼ってしまったw
~a+~b=A
とかは要らなかったw
a+b=A
とかだけでよかった
a \cup bが普通の和集合ね。

923 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 21:04:35.96 ID:eC8ouzxK.net]
>>892 bat
:: 引数は整数限定。結果は少数第2位を四捨五入。0〜0.04の時のみ少数第2位まで表示
:: 少し大き目の値を与えるとoverflow
@echo off &setlocal enabledelayedexpansion
set /a "x=%1*100, y=%2*100, z=0, d=%3*254, s=x*x+y*y, a=s>>1"
:WHILE
if %a% NEQ %z% set /a "z=a, a=(a+s/a)>>1" &goto :WHILE
set /a w=x*d/a, h=y*d/a
for %%G in (w h) do (
if !%%G:~-1! GEQ 5 set /a %%G+=10
if !%%G! GEQ 100 ( set %%G=!%%G:~0,-2!.!%%G:~-2,1!
) else if !%%G! GEQ 10 ( set %%G=0.!%%G:~-2,1!
) else if !%%G! GEQ 1 ( set %%G=0.0!%%G!
) else if !%%G! EQU 0 ( set %%G=0.00
) else echo ERROR: %%G=!%%G!
)
echo=%w% %h%

924 名前:デフォルトの名無しさん [2020/11/04(水) 00:20:20.72 ID:rxWDSDf0.net]
>>892 Lua
function f(x, y, l)
local a =2.54 * l / (x * x + y * y)^0.5
return x * a , y * a
end
print(string.format("%.1f , %.1f", f(16, 9, 40)))
実行結果
88.6 , 49.8

925 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 00:20:22.20 ID:kNuSoIVx.net]
windows知らんけど
バッチ・ファイルすげぇなww



926 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 18:59:14.79 ID:M+x6liG8u]
【アフィリエイト】ブログで「月100万円稼ぐ方法」を初心者向けにプロブロガーが解説
https://www.youtube.com/watch?v=tnp0oUbg2uc
【実例有り】ブログで月1万円稼ぐまでの具体的な道筋を教える【プロが解説】
https://www.youtube.com/watch?v=S-pk5AmW3g8
【案件も公開】ブログで月20万円稼ぐ方法の全て。具体的な道筋や戦略も全て公開【雑記でもいけた】
https://www.youtube.com/watch?v=Jiujwjhe300
ブログ収益が大きく伸びた、たった1つのきっかけを話す【ネタバレ:人と会う】
https://www.youtube.com/watch?v=r5cutrq6GO4
ブログで稼ぐ仕組み徹底解説】初心者にもやさしく、丁寧に説明
https://www.youtube.com/watch?v=n4qF7xpL7-M
【ミスるとヤバい】特化ブログと雑記ブログ、どっちがいいの?おすすめの運営方法も解説!
https://www.youtube.com/watch?v=sh2v5Uqlo1M
【危険】ブログで稼げずに「挫折」してしまう人の特徴【初心者は特に注意】
https://www.youtube.com/watch?v=W86zHTngRLE

927 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:24:03.31 ID:uO47xEs9.net]
>>902 Ruby
https://ideone.com/uEqDoX

928 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 03:19:19.40 ID:EuRO0zRP.net]
>>902
C++
https://ideone.com/YmUte9

929 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:02:28.58 ID:pDv0veJc.net]
お題
'□'(正方形)と'_'(空白)で表される図形を45度回

930 名前:転して描画せよ。

[例1]


/\
\/


[例2]
___□
□□_□
_□□□

/\
\/\
/\/ /\
\/\/\/
 \/\/
  \/
[]
[ここ壊れてます]

931 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 20:47:59.87 ID:uObXfCng.net]
デカくなっててワロタ
良さげなお題

932 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:31:16.69 ID:5bWXoO+B.net]
>>914 html
<textarea style="transform:rotate(45deg)">
___□
□□_□
_□□□
</textarea>

933 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:39:12.30 ID:W9kenpkY.net]
>>916
すげぇな
今はCSSでこんなことまでできるのか

934 名前:デフォルトの名無しさん mailto:sage [2020/11/05(木) 23:40:00.35 ID:uObXfCng.net]
:scale(2)もしとけ

935 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 01:21:28.35 ID:DUBJiW5Z.net]
>>914
haskell
https://ideone.com/VwHiJD



936 名前:デフォルトの名無しさん [2020/11/06(金) 03:01:56.79 ID:2mWV4tVe.net]
>>902
Java
https://paiza.io/projects/zGMV5xqRPjP1fxjo1Zu1Nw

937 名前:253 mailto:sage [2020/11/06(金) 13:23:23.40 ID:1EHNC/LO.net]
>>902 Perl5

use feature qw{current_sub say};
use Data::Dump 'dump';
@a = sub{
 my $l = pop;
 @_ ? ( map{
  sub{
   map{
    sub{
     sub{
      push @{$_[$_]}, $l;
      [@_]
     }->(map{[@$_]} @_);
    }->(@_)
   } 0..@_
  }->(@$_)
 } __SUB__->(@_) ) : [[$l]];
}->(1..8);
say dump @a;
say scalar @a;

実行結果
~ $ perl 18_892.pl
(
[[1 .. 8]],
[[1 .. 7], [8]],
… 中略
[[1], [2], [3], [4], [5], [6], [7, 8]],
[[1], [2], [3], [4], [5], [6], [7], [8]],
)
4140

938 名前:デフォルトの名無しさん mailto:sage [2020/11/06(金) 13:24:39.43 ID:DUBJiW5Z.net]
>>914
haskell
素直に内包表記使ったVer.
https://ideone.com/gA63Fi

939 名前:デフォルトの名無しさん [2020/11/07(土) 15:16:17.29 ID:dGj5mxP2.net]
sed 's/□/◇/g'

あ、いや、なんでもないです。忘れてください。

940 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 15:50:17.56 ID:0+q2MsjY.net]
>>914 bat
@echo off &setlocal enabledelayedexpansion
if "%~1"=="" set "this=%~0" &"%~0" "□"
set /a n=0, Hmax=0
:GET_ARG
set "arg%n%=%~1"
set "arg%n%=!arg%n%:_=0 !"
set "arg%n%=!arg%n%:□=1 !"
shift
if not "%~1"=="" set /a n+=1 &goto :GET_ARG
for /L %%i in (0,1,%n%) do ( set h=0
for %%b in (!arg%%i!) do set /a a[%%i;!h!]=%%b, h+=1
if !h! GTR !Hmax! set /a Hmax=h
)
set /a t=n+Hmax, Hmax-=1
for /L %%a in (0,1,%t%) do for /L %%b in (0,1,%t%) do set R[%%a;%%b]=0
for /L %%a in (0,1,%n%) do for /L %%b in (0,1,%Hmax%) do (
set /a A=%%a+%%b, B=a+1, C=n+%%b-%%a, D=c+1
set /a "R[!A!;!C!]|=a[%%a;%%b], R[!A!;!D!]|=a[%%a;%%b], R[!B!;!C!]|=a[%%a;%%b], R[!B!;!D!]|=a[%%a;%%b]"
REM orをxorに替えればアウトライン表示
)
:: for /L %%A in (0,1,%t%) do (for /L %%B in (0,1,%t%) do set "P%%A=!P%%A!!R[%%A;%%B]!") &echo !P%%A!
for /L %%A in (0,1,%t%) do (
for /L %%B in (0,1,%t%) do (
set /a "M=%%A+%%B, M%%=2"
if "!R[%%A;%%B]!"=="0" (set "S%%A=!S%%A! ") else if "!M!"=="0" (set "S%%A=!S%%A!/") else set "S%%A=!S%%A!\"
)
echo=!S%%A!
)
endlocal
if not "%~0"=="_□□□" "%this%" "___□" "□□_□" "_□□□"
pause &exit /b

941 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 19:47:28.12 ID:/E6xY+R5.net]
バッチでやるとかいい根性してる

942 名前:デフォルトの名無しさん [2020/11/07(土) 21:06:37.63 ID:anINQjB0.net]
>>914 Common Lisp
https://ideone.com/CMyiD0

943 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 22:21:52.44 ID:alCltY04.net]
>>918
scale(1.41421356)でしょ

944 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 23:04:28.88 ID:zLEnd997.net]
>>902
ビット操作で直接作れた
https://paiza.io/projects/JwD_YC7dX2RRZz8G9ydnaA

945 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:05:04.78 ID:DLA7KrcO.net]
>>924
バッチファイル兄貴いいぞ
もっとやれ



946 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:15:55.29 ID:ct8WHwWl.net]
バッチよくやってるな
batにトランスパイルできるもっといい感じの構文の言語とかないの

947 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:24:23.73 ID:vLTv8mzL.net]
バッチで>>902やる猛者はいないのか?
QZならできそうだがだんまりか?

948 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:34:25.46 ID:HKu5GaPi.net]
>>928
このコードZen2までのAMDのCPUだと多分とんでもなく遅くなる
ここで使ってるpdep命令がintelのやZen3と比べて100倍以上遅いから

949 名前: mailto:sage [2020/11/08(日) 03:02:51.65 ID:H3a4zXqH.net]
>>931
私は C しか書けません

950 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:56:26.07 ID:YnyAcD/m.net]
>>930
こんなのならあった
https://github.com/imachug/BatchBuilder

moduleサポート:
export say_hello
echo Hello, %1!
end export
でエクスポート
import say_hello Takashi
でインポート(というかecho Hello, Takashi!に置き換わる)

値返却 (return) サポート:
export ask q
set /p result=%q%?
return %result%
end export

export delete_dir
import -> agree ask "Delete %1"
if "%agree%" == "yes" (
rmdir /S /Q %1
)
end export

globalキーワード:
module内の変数はデフォでlocal。
global変数にしたいときはglobalキーワードを使う。
global my_var=hogehoge

951 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 03:57:27.82 ID:YnyAcD/m.net]
>>934 の続き

再帰サポートのための2つのディレクティブ:
@safe_recursion
@follow_local

クラスとオブジェクト:
クラス作成
class ClassTest
export say_hello
echo Hello, %1!
end export
export say_bye
echo Bye, %1!
end export
end class

オブジェクト生成
new -> my_class ClassTest

メソッド呼び出し
import %my_class%.say_hello Takashi
import %my_class%.say_bye Takashi

他、クラスフィールドやマジックメソッドなど

952 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 04:20:05.05 ID:YnyAcD/m.net]
>>930
もうひとつ。
https://github.com/kerrgavin/Transpiler-DSL-to-Windows-Batch-Script

>>934 がbatの拡張といったおもむきなのに対して、こちらは専用DSLからのトランスパイラ。Python製。

二値の平均:
avg(arg1, arg2, average)
fun avg {
num a = larg1 + larg2
num a = a/2
"echo" a
}
以下にトランスパイルされる
@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
call :avg %1,%2,%average%
@EXIT /B 0
:avg
set /a a=%~1 + %~2
set /a a=%a% / 2
echo %a%
EXIT /B 0

0から9999まで表示:
for (num i = 0;i < 10000;i+1){
"echo" i
}
トランスパイル結果略

953 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:03:48.08 ID:YnyAcD/m.net]
>>930
シェルスクリプトからの変換系:
https://github.com/daniel-sc/bash-shell-to-bat-converter
https://github.com/sagiegurari/shell2batch

あと専用言語からのトランスパイル系でもうひとつ凄いのがあった。
https://github.com/batsh-dev-team/Batsh
タイプ的には >>936 と同じような感じなんだけどbatにもシェルスクリプトにもコンパイルできる。
こっちは凄いねスター4,000超えてるわ。
なんでこれが最初に見つからんのや…
プレイグラウンド( https://batsh.org/ )もあってサンプルロード・コンパイルもできるから試してみて。
文法はオーソドックスなC系ですね。

954 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 05:16:53.07 ID:YnyAcD/m.net]
>>937
moongiftに紹介記事があった。
https://www.moongift.jp/2019/08/batsh-bashbatchのスクリプトを生成するプログラミング言語/
…そしてアドレスバー見たら既にお気に入りに登録されていた…

955 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 08:18:54.23 ID:ct8WHwWl.net]
>>937
これきれいだな



956 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:19:00.95 ID:biYC5NlX.net]
もうすぐポッキーの日
[お題] 人口合計でオール1

URLのページに都道府県別の人口が載っている。
 今回使用するのは、2019/10のデータ
 https://ideone.com/R4PCiQ

 同じ県は一回のみで、異なる県を何県でも選んでよい。
 (つまり選び方は全部で 2^47 種類)
 人口合計が"1"のみの数字となる選び方は何種類あるか?
 (実質、1111万1111人, 1億1111万1111人になる選び方)

※一発正解問題、実行時間3秒程度。
 同ページの他の年月人口でも計算できる程度のクオリティでok
※ちなみに 2015/10データだと916(40+876)種類だった。

957 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 23:52:24.94 ID:XExSNiE1.net]
11111111 は43?
111111111はオンラインコンパイラでタイムアウトorz

958 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:20.57 ID:duQVrAg3.net]
面白そうなお題

959 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:38:46.30 ID:qJS2/p90.net]
111111111 は650かな?

960 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 00:45:23.62 ID:qJS2/p90.net]
とりあえず
Haskell

spp19 = (小さいもの順に並べた元データ)

findSum :: Int -> [Int] -> Int
findSum x ys = case ys of
[] -> 0
( z : zs ) | z > x -> 0
( z : zs ) | z == x -> 1
( z : zs ) | otherwise ->
( findSum x zs )
+ ( findSum ( x - z ) zs )

main = do
print $ findSum 15105031 spp19
print $ findSum 11111111 spp19

----
650
43

961 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:25:54.45 ID:903MPdZb.net]
batコーイ!!

962 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:49:15.00 ID:VuEsWlWs.net]
>>940
https://ideone.com/8nuT5d
力任せなコードだけどどうにか時間内に終わった

963 名前:デフォルトの名無しさん [2020/11/10(火) 13:44:24.83 ID:3xGJBleZ.net]
典型的なdp問題じゃねえの

964 名前:929 mailto:sage [2020/11/10(火) 17:29:30.75 ID:q5cN/btj.net]
>>940

・想定解はDPの数え上げ
 さすがに1.1億×47は苦しいので、
 1.1億に関しては、(全人口 - 1.1億)で計算する。
 そうすれば、1600万×47の計算量で済む。
 
 https://ideone.com/R4PCiQ
  下にpython(numpy)で想定解追加

965 名前:253 mailto:sage [2020/11/11(水) 00:47:47.87 ID:vox+S3u3.net]
(´・ω・`)



966 名前:デフォルトの名無しさん mailto:sage [2020/11/11(水) 18:19:57.16 ID:NMl7/e2v.net]
暇つぶしに>>944がどれくらい再帰呼び出し読んでるか数えてもらった

findSum' x ys = let ( z : zs ) = ys in case ys of
[ ] -> 0
_ | z >= x -> 0
otherwise -> ( findSum' x zs ) + ( findSum' ( x - z ) zs ) + 2
----
2021619696
20億回ちょい
dpだと15,105,031×47=709,936,457で7億回ちょいだから35%ほどになるのか
勉強になった

967 名前:デフォルトの名無しさん [2020/11/12(木) 15:39:00.87 ID:VX9X1ew1.net]
お題1
1〜nまでの偶数をランダムに出力してください

お題2
[開始の数] [増分] [終了の数]を入力として受け取りランダムに出力してください


入力: 1 2 10
出力:
1
1
3
9
1
7
5

968 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 15:58:04.88 ID:uK53dAw4.net]
>>951 を読んで、やっぱり日本語は非論理的な言語だな、と思った。

969 名前:デフォルトの名無しさん [2020/11/12(木) 16:04:34.29 ID:VX9X1ew1.net]
書き手の問題だと思うよ

970 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 18:42:17.55 ID:HU5jtk1k.net]
オレは深まりゆく秋を感じた

971 名前:デフォルトの名無しさん [2020/11/12(木) 19:26:25.71 ID:VX9X1ew1.net]
ふーけゆくー秋の夜ー

972 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 19:34:08.43 ID:nzp5rNOe.net]
>>951 Ruby

p rand(2..$_.to_i) & -2 # => 32 while gets

-*- input -*-
2
10
100

-*- output -*-
2
6
78

p eval$_.gsub(/\s+/,'%s')%%w[.step(*[ , ].rotate).to_a.sample]while gets

-*- input -*-
1 2 10
1 2 10
10 5 99


-*- output -*-
7
1
85

973 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 23:53:28.13 ID:HU5jtk1k.net]
そゆいみか
入力パースするとこは略して

Haskell

import System.Random
import Control.Monad

randomABC a b c = let
r = [ a, a+b .. c ]
in ( r !! ) <$> ( randomRIO ( 0, length r - 1 ) :: IO Int )

main = do
print =<< ( replicateM 20 $ randomABC 1 2 10 )
print =<< ( replicateM 20 $ randomABC 5 7 40 )
----
[1,1,9,7,9,7,7,9,7,5,7,7,7,3,7,1,5,9,5,7]
[33,26,26,26,12,19,40,40,12,33,19,26,19,26,26,33,19,5,5,33]

974 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:43:02.05 ID:3cTZftC0.net]
>>951 bat
@echo off &setlocal
set /a n=8 &REM 出力個数
echo -3 9
for /L %%i in (1,1,%n%) do call :RAND_A2B -3 9
echo=&echo 3 -5
for /L %%i in (1,1,%n%) do call :RAND_A2B 3 -5
echo=&echo 4 4
for /L %%i in (1,1,%n%) do call :RAND_A2B 4 4
echo=&echo -5 2 2
for /L %%i in (1,1,%n%) do call :RAND_SiE -5 2 2
echo=&echo 2 -3 -12
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 -3 -12
echo=&echo 2 3 -4
for /L %%i in (1,1,%n%) do call :RAND_SiE 2 3 -4
pause &exit /b
:: 1〜n間の偶数をrandom出力 => a〜b間の偶数をrandom出力
:RAND_A2B
set

975 名前:local
set /a "f=%1&1"
if %1 EQU %2 ( if %f% EQU 0 echo %1) &exit /b
if %1 LSS %2 set /a a=%1+1, b=%2
if %1 GTR %2 set /a a=%2+1, b=%1
set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1"
echo %r%&exit /b
:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND_SiE
setlocal
if %2 NEQ 0 ( set /a "a=(%3-%1)/%2" ) else set /a a=0
if %a% LSS 0 set /a a=0
set /a "r=%random%%%(a+1)*%2+%1"
echo %r%&exit /b
[]
[ここ壊れてます]



976 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 22:58:48.40 ID:ghr6tNw2.net]
オンラインでbat動かせるサイトない?
>>958試して見たいんやけど

977 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:20:18.52 ID:a1Z/nYk3.net]
bat兄貴天才やな

978 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 00:46:02.44 ID:WHpB6hAc.net]
>>959
それをお題にするのはありかも
947を読んで同じ動きをするプログラムを書け、とかね

979 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 06:23:08.91 ID:rQXll7XK.net]
過疎るのもわかるわ

980 名前:デフォルトの名無しさん [2020/11/15(日) 04:26:34.92 ID:UMNa3GdF.net]
>>951
Java
https://paiza.io/projects/IUNanoZeum1nhkVUBUqXZA

981 名前:デフォルトの名無しさん [2020/11/15(日) 18:33:50.31 ID:UMNa3GdF.net]
お題
天気のデータを読み取って翌日の天気は前日と同じと予測しそれが当たる確率を求めてください

入力: 曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴

982 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 18:40:06.62 ID:KOddDUPF.net]
>>964 Ruby

gets.split(?,).each_cons(2).tap{|a| p 1.0 * a.count{|b| !b.uniq[1]}/ a.size}

# => 0.3333333333333333

983 名前:デフォルトの名無しさん [2020/11/15(日) 18:41:22.95 ID:UMNa3GdF.net]
はやいな

984 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:20:51.56 ID:8j4ATkh0.net]
>>964 JavaScript
let hits = 0
const input = '曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴'.split `,`
input.reduce((acc, v) => (hits += acc == v ? 1 : 0, v))
console.log(hits / (input.length - 1))
//=> 0.3333333333333333

985 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:22:58.52 ID:KOddDUPF.net]
>>967
.split(`,`) では



986 名前:デフォルトの名無しさん mailto:sage [2020/11/15(日) 20:23:55.05 ID:KOddDUPF.net]
すまん。バッククウォートだった。

987 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 00:51:51.08 ID:lyH8UsEw.net]
>>958
@echo off &setlocal enabledelayedexpansion
for /f "delims=:" %%A in ('findstr /en ARGS "%~0"') do set /a L=%%A, n=12 &REM nは出力個数
for /f "usebackq skip=%L% delims=" %%A in ("%~0") do set "i="&(for %%B in (%%A) do set /a i+=1)&echo %%A&set "S="&(for /L %%D in (1,1,%n%) do call :RAND!i! %%A&(if defined r set "S=!S! !r!" &set "r="))&echo=!S!&echo=
set /p<nul=終了&pause >nul &exit /b

:: a〜b間の偶数をrandom出力
:RAND2
setlocal &REM VAR= a b c r f
if %1 NEQ %2 ((if %1 LSS %2 (set /a a=%1+1, b=%2) else set /a a=%2+1, b=%1) &set /a "c=b-a+1, r=((%random%<<15)+%random%)%%c+a, r&=~1") else set /a "f=%1&1" &if !f! EQU 0 set r=%1
endlocal &set "r=%r%" &exit /b

:: [開始の数] [増分] [終了の数] を引数として条件を満たす値をrandom出力
:RAND3
setlocal &REM VAR= a r
if %2 NEQ 0 set /a "a=(%3-%1)/%2" &if !a! LSS 0 set "a=" &REM [ else set "a="] 省略:上位環境でaが使用されている場合には必要
set /a "r=((%random%<<15)+%random%)%%(a+1)*%2+%1" &REM set /aでは存在しない変数は0として扱われる
endlocal &set "r=%r%" &exit /b
:: ARGS
-3 9
3 -5
4 4
5 5
1 0 2
-5 2 2
2 -3 -12
2 3 -4
-256 040 0x100
0400 ~0x1F ~0xff

988 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:31:51.13 ID:apQPm4KR.net]
>>965
haskell

import Data.List

str = "曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴"

accuracy x = let
pairs = id
. map ( take 2 . reverse ) -- [ "BA", "CB", "DC",..]
. drop 2 -- [ "AB", "ABC",..]
. inits -- [ "", "A", "AB",..]
. filter ( /= ',' ) -- "ABCD.."
$ x
successes = filter ( \x -> head x == last x ) pairs
nP = genericLength pairs
nS = genericLength successes
in nS / nP

main = print $ accuracy str

989 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 03:32:04.47 ID:lyH8UsEw.net]
>>964 bat
@echo off &setlocal enabledelayedexpansion
set /a i=-1, match=0
for %%A in (曇,晴,曇,曇,晴,曇,曇,雨,雨,雨,曇,曇,晴,曇,雨,曇,雨,曇,曇,曇,晴,曇,雨,晴,晴,晴,晴,曇,晴,曇,晴) do (
set /a i+=1
if "!S!"=="%%A" set /a match+=1
set s=%%A
)
:: echo 一致数/比較回数 : %match%/%i%
set /a a=match, b=i
:EUCLID_GCD
if %a% NEQ 0 set /a "c=a, a=b%%a, b=c" &goto :EUCLID_GCD
set /a match/=b, i/=b
if %match% NEQ 0 (echo 確率 : %match%/%i%) else echo 確率 : 0
pause

990 名前:デフォルトの名無しさん [2020/11/20(金) 19:52:50.75 ID:HawO8Ftl.net]
>>951
Kotlin
https://paiza.io/projects/AeE4_7EmFluzVxuefBJmDw

991 名前:とくめい mailto:kakeruyamasato@gmail.com [2020/11/24(火) 01:34:45.23 ID:SQQDs1Pp.net]
kakeruyamasato@gmail.comこのメアドを悪用してみせて

992 名前:デフォルトの名無しさん mailto:sage [2020/11/24(火) 08:07:25.33 ID:aaTbFie9.net]
通報しますた

993 名前:デフォルトの名無しさん [2020/11/25(水) 01:49:24.25 ID:O2Mln20T.net]
>>964
Kotlin
https://paiza.io/projects/-bhKDI048mc0kOJzIFqOHA

994 名前:デフォルトの名無しさん mailto:sage [2020/11/26(木) 19:02:45.00 ID:ACzSTlzf.net]
>>951
a,b,c = [1,2,10]
puts ((a..c) % b).to_a.shuffle

995 名前:デフォルトの名無しさん [2020/11/27(金) 01:08:20.91 ID:bIFui41M.net]
>>977
なんていう言語?



996 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 02:57:17.73 ID:ocMZsxYX.net]
>>978
rubyでしょ

997 名前:デフォルトの名無しさん [2020/11/27(金) 19:31:40.66 ID:Pnsgs34G.net]
rubyだったか。

998 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 00:37:28.60 ID:PcPNtVOH.net]
%がわからないって怒られた

999 名前:デフォルトの名無しさん [2020/11/28(土) 07:20:49.13 ID:mYohOVrw.net]
お題
以下を表示する
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1000 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 07:34:45.42 ID:CtkueG9H.net]
>>982 bat
@echo.以下を表示する
@echo.Monday
@echo.Tuesday
@echo.Wednesday
@echo.Thursday
@echo.Friday
@echo.Saturday
@echo.Sunday

1001 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:05:44.72 ID:nEfgRBi9.net]
意外と難しいな

1002 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 08:40:11.81 ID:wyvnQiBB.net]
>>982 Ruby

puts Date::DAYNAMES.rotate

# => Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1003 名前:デフォルトの名無しさん [2020/11/28(土) 09:00:26.43 ID:2Muxtrov.net]
>>977
問題の解釈違わねえ?

1004 名前:デフォルトの名無しさん [2020/11/28(土) 09:12:26.58 ID:nEfgRBi9.net]
>>982 js
const range = v => [...Array(v).keys()]
const DAY_MS = 24 * 60 * 60 * 1000

const weekday = d => d.toLocaleString('en', { weekday: 'long' })

console.log(range(7).map(i => weekday(new Date((i + 4) * 24 * 60 * 60 * 1000))).join("\n"))

1005 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 11:36:22.72 ID:FGpMIdZG.net]
>>981
( 1..10 ) % 2

range に、% というメソッドは無い!



1006 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:27:13.39 ID:GOv1h+p2.net]
>>988
NEWS for Ruby 2.6.0
2.5.0 以降の変更
https://docs.ruby-lang.org/ja/2.6.0/doc/news=2f2_6_0.html
> Range
> 新規メソッド
> Range#% が追加されました。 [feature#14697]

1007 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 12:38:57.57 ID:L52xXSLK.net]
予想通りの流れになってくれて何より

1008 名前:977 mailto:sage [2020/11/28(土) 14:12:40.28 ID:FGpMIdZG.net]
ruby -e 'p ( ( 1..5 ) % 2 ).to_a'
#=> [1, 3, 5]

2 は、各ステップの大きさ

1009 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:09:49.88 ID:myGQAvEM.net]
ダメだ
オンラインでRuby 2.6使えるとこ見つからない
どっかない?

1010 名前:デフォルトの名無しさん [2020/11/28(土) 16:34:18.46 ID:gB71rnHS.net]
>>992
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]
https://www.jdoodle.com/execute-ruby-online/

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]
https://techiedelight.com/compiler/

ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
https://paiza.io/en/projects/new?language=ruby

1011 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 16:39:08.00 ID:nEfgRBi9.net]
jdoodle初めて知った
手元の汚い環境にもrepelにもpaizaにもなかったとき使おう

1012 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:26:12.48 ID:FGpMIdZG.net]
paiza は、いつも新しい

codepad は、古いような気がする

1013 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:30:47.77 ID:FGpMIdZG.net]
漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

対応している言語を表示すると、
anyenv install --list

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv

Julia のjlenv も追加された。
anyenvと同様のツールに、asdf もある

1014 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 17:57:16.56 ID:myGQAvEM.net]
>>993
thx
でもiphoneでどのサイトもコピペができないorz
なんでなんだろう?

1015 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 18:01:21.11 ID:myGQAvEM.net]
とりあえず自分で打ち込んで試した
shuffleはランダムに並べ替えみたいだからちょっと違うかな



1016 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:44:23.07 ID:wyvnQiBB.net]
>>998
shuffleの代わりにsampleを使うといい

1017 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 06:10:23.39 ID:LsAPFm47.net]
>>982 bat
:: 年月日を元に曜日を返す。 No args validation. 引数が無ければシステム時間
@echo off &setlocal enabledelayedexpansion
if not "%~1"=="" set "date=%~1"
:: set "date=2020.09.09"
set i=0
for %%a in (Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Y,M,D) do set "wd!i!=%%a"&set /a i+=1
set i=7
for /f "tokens=1-3 delims==/-.:,;()_・年月日 " %%a in ("%date%") do for %%d in (%%a %%b %%c) do for /f "tokens=* delims=0" %%e in ("%%d") do for /f %%i in ("!i!") do set /a !wd%%i!=%%e,i+=1
:: echo=%Y%,%M%,%D%,
set /a h=(365*Y+(Y-1)/4-(Y-1)/100+(Y-1)/400+(M+7)/10*(30*(M-3)+(3*M-7)/5+59+D-1)+(1/(Y%%4+1)-1/(Y%%100+1)+1/(Y%%400+1)+(M+7)/10)/2)%%7
echo=!wd%h%!
pause&exit /b

1018 名前:デフォルトの名無しさん [2020/11/29(日) 12:05:03.89 ID:POmPIOqu.net]
>>982 Julia
using Dates
for w=1:7
println(Dates.format(Date(1,1,w), "E"))
end

1019 名前:デフォルトの名無しさん [2020/11/29(日) 14:25:29.24 ID:KxupmnON.net]
>>982
Kotlin script

println(java.text.DateFormatSymbols(java.util.Locale.ENGLISH).getWeekdays().let { wd -> ((2..6) + 1).map { wd[it] } }.join
ToString("\n"))

Javaのライブラリをそのまま使ってやってるので1が日曜で7が土曜になってしまい、
それを並び替えてから出力する必要があって少し複雑になった。

1020 名前:253 mailto:sage [2020/11/29(日) 15:02:42.80 ID:onV9IrOo.net]
>>982Perl5

use Time::Piece;
use Time::Seconds;
$

1021 名前:t = Time::Piece->strptime('210201','%y%m%d');
for (0..6) { print $t->fullday."\n"; $t += ONE_DAY }


実行結果
~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
[]
[ここ壊れてます]

1022 名前:253 mailto:sage [2020/11/29(日) 17:21:11.49 ID:onV9IrOo.net]
>>982 Perl5、>>1003 のもうチョイ手抜き版

use Time::Piece;
for (1..6,0) { print Time::Piece::fullday([(0)x6, $_])."\n" }

~ $ perl 18_971_fullday.pl
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

1023 名前:デフォルトの名無しさん [2020/11/29(日) 20:08:13.17 ID:idUZlJAo.net]
>>982
Java
https://paiza.io/projects/F3UDtssyIBLD9KwEcaTfjA

1024 名前:デフォルトの名無しさん [2020/11/29(日) 20:39:34.37 ID:idUZlJAo.net]
お題
配列を入力として受け取り
値が連続するサブ配列のうち、合計が最大のものを出力してください


入力:[−2, 1, −3, 4, −1, 2, 1, −5, 4]
出力:[4, −1, 2, 1]

1025 名前: mailto:sage [2020/11/29(日) 21:07:17.97 ID:POdKASdd.net]
>>1006
>サブ配列
の定義を教えてください



1026 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:15:00.96 ID:sOEBQUsx.net]
値が連続しないサブ配列とは?

1027 名前:デフォルトの名無しさん [2020/11/29(日) 21:21:35.35 ID:idUZlJAo.net]
>>1007
教えません

>>1008
[1, 4, 2, 1, 4]
とか

1028 名前:デフォルトの名無しさん mailto:sage [2020/11/29(日) 21:26:09.30 ID:sOEBQUsx.net]
[4, −1, 2, 1]は値が連続するサブ配列で
[1, 4, 2, 1, 4]は値が連続しないサブ配列?
連続の定義は?

1029 名前:デフォルトの名無しさん [2020/11/29(日) 21:34:10.34 ID:idUZlJAo.net]
>>1010
教えません

1030 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 138日 7時間 40分 24秒

1031 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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