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

レス数が1000を超えています。これ以上書き込みはできません。
2021/06/19(土) 00:02:57.84ID:MQWrKSb7
プログラミングのお題スレです。

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

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

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

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

※前スレ
プログラミングのお題スレ Part19
https://mevius.5ch.net/test/read.cgi/tech/1606662245/
2022/11/12(土) 08:50:36.22ID:yCEPOpQl
>>983 Ruby

a = %w[aa bb cc]
p = [0.4, 0.5, 0.1]
f = -> (a, p) { r = rand; a[(0..a.size-2).find{ r < p[0.._1].sum } || a.size - 1] }
10.times{ print f[a, p] }

# => aabbccbbaaaaaabbbbbb
2022/11/12(土) 10:10:20.03ID:g2vYgSbJ
>>983
Haskell
https://ideone.com/UErkR7

import System.Random
import Data.List

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem is ws r = let
folder a b = a : map ( + a ) b
selecter r ( i, ( f, t ) ) = f <= r && r < t
ts = foldr folder [ ] ws
fs = 0 : ts
ifts = zip is $ zip fs ts
in fst $ head $ filter ( selecter r ) ifts

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds
2022/11/12(土) 10:19:35.32ID:uOtU06vW
>>983 octave
https://ideone.com/mIKDyu
f = @(a, r) a(rand < cumsum(r))(1);
2022/11/12(土) 14:34:06.57ID:Q9bJaddO
>>983 ocaml
https://ideone.com/aDR0Do
let (<<) f g x = f (g x)
let cumsum =
List.rev << fst << List.fold_left (fun (a, s) f -> s +. f :: a, s +. f) ([], 0.)
let f xs =
let r = Random.float 1. in
fst << List.find ((<) r << snd) << List.combine xs << cumsum
2022/11/12(土) 16:47:04.36ID:We3Ba5Li
>>983
コレでよかった
Haskell
https://ideone.com/WtPXzw

import System.Random

randomDbls :: StdGen -> [ Double ]
randomDbls= randomRs (0,1)

chooseItem (i:is) (w:ws) r | r < w = i
chooseItem (i:is) (w:ws) r = chooseItem is ws ( r - w )

main = do
rds <- ( return . randomDbls ) =<< getStdGen
print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds
2022/11/12(土) 17:19:40.29ID:MirHjvCf
>>983
別名法とかいうアルゴリズム
https://ideone.com/J0p12R
2022/11/12(土) 19:13:20.80ID:MirHjvCf
https://ideone.com/8utmEg
元からあったコードをちょっといじったんだけど変換ミスがあった
991デフォルトの名無しさん
垢版 |
2022/11/13(日) 18:45:40.25ID:zjrUNZaB
>>983
Kotlin

https://paiza.io/projects/dh1A84MN5OxLQkw7r2yL7Q
2022/11/13(日) 19:01:26.14ID:ZCYlhUwL
次スレ
プログラミングのお題スレ Part21
https://mevius.5ch.net/test/read.cgi/tech/1668333636/
993デフォルトの名無しさん
垢版 |
2022/11/15(火) 08:06:01.58ID:XL64sJsG
うめ
2022/11/15(火) 09:22:13.74ID:x0rg5fHd
お題:1辺がn文字の正四角形を表示せよ
1 <= n <= 8 とする
2022/11/15(火) 10:16:55.01ID:V1sKjJZc
haskell

https://ideone.com/4Kd3el

sqStr n = ""
++ "\x250f" ++ r "\x2501" ++ "\x2513" ++ "\n"
++ r ( "\x2503" ++ r "\x2001" ++ "\x2503" ++ " \n" )
++ "\x2517" ++ r "\x2501" ++ "\x251b" ++ "\n"
where r = concat . replicate ( n-2 )

main = putStr $ sqStr 10
2022/11/15(火) 20:16:12.10ID:r20LvnA2
>>994 octave
https://ideone.com/k9cAWw
function s = f(n)
s = repmat('#', n);
s(2:end-1, 2:end-1) = ' ';
end
997デフォルトの名無しさん
垢版 |
2022/11/17(木) 21:39:57.15ID:BbSHYj/y
うめ
998デフォルトの名無しさん
垢版 |
2022/11/17(木) 21:40:03.49ID:BbSHYj/y
うめ
999デフォルトの名無しさん
垢版 |
2022/11/17(木) 21:40:08.22ID:BbSHYj/y
うめ
1000デフォルトの名無しさん
垢版 |
2022/11/17(木) 23:04:00.66ID:W9+RkUIs
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 516日 23時間 1分 3秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況