■ このスレッドは過去ログ倉庫に格納されています
関数型言語でフラグ管理をする方法
- 1 :デフォルトの名無しさん:2018/10/30(火) 21:17:26.98 ID:ZgZ/9CmG.net
- 選択肢が4つでてくる問題が10問でてきて
8問以上正解すればクリアとかどうやって実装するの?
- 24 :デフォルトの名無しさん:2018/11/02(金) 00:15:52.93 ID:bE/8yEKV.net
- >>23
別に関数型じゃなくても、それできると思う
メリットが無いからやらないだけで
- 25 :デフォルトの名無しさん:2018/11/02(金) 21:50:50.01 ID:Hx89MQzb.net
- ここまでゴミ
- 26 :デフォルトの名無しさん:2018/11/02(金) 22:34:02.29 ID:Jnk4S5ca.net
- 数式をそのままコードに落とせる時もあったが、そもそも組みたい機能がカッコよく数式に落とせるモノじゃなかった
- 27 :デフォルトの名無しさん:2018/11/02(金) 22:55:23.66 ID:bE/8yEKV.net
- 関数型の特徴でもある末尾再帰
末尾再帰は速度を上げる機能ではなく
速度が遅くならないようにする機能
普通にループで書けば速いのに、それができないから再帰で書く
そうすると遅くなる。それを回避する機能
普通にループで書くより速くなったりしない
- 28 :デフォルトの名無しさん:2018/11/03(土) 00:09:24.27 ID:3NGq3yLp.net
- そう。わざわざなぜ末尾再帰にするかというと、そうすることでループへ変換してくれるから。
こういうのを本末転倒と言う。
- 29 :デフォルトの名無しさん:2018/11/03(土) 08:07:41.03 ID:rSl2Ac3O.net
- じゃあ極力ループ使わなければいい
頭ワルイわ
低学歴知恵遅れにループ使わせると
一回ループするのにもの凄い時間かかるような処理を平気でいれるからな
しかもそれが何重にもなってる
- 30 :デフォルトの名無しさん:2018/11/03(土) 08:15:12.69 ID:dQj0A1Se.net
- ループを使わないでどうやって作るの?
- 31 :デフォルトの名無しさん:2018/11/03(土) 08:34:36.98 ID:BD8z/Z4W.net
- int numofbits5(long bits)
{
bits = (bits & 0x55555555) + (bits >> 1 & 0x55555555);
bits = (bits & 0x33333333) + (bits >> 2 & 0x33333333);
bits = (bits & 0x0f0f0f0f) + (bits >> 4 & 0x0f0f0f0f);
bits = (bits & 0x00ff00ff) + (bits >> 8 & 0x00ff00ff);
return (bits & 0x0000ffff) + (bits >>16 & 0x0000ffff);
}
- 32 :デフォルトの名無しさん:2018/11/03(土) 11:42:08.44 ID:ugiNdMW1.net
- ビット演算どうでもいいので
- 33 :デフォルトの名無しさん:2018/11/03(土) 11:55:35.67 ID:BD8z/Z4W.net
- もしかして、ラジオボタンとかの想定で悩んでるのか?
- 34 :デフォルトの名無しさん:2018/11/03(土) 15:48:10.80 ID:AAuGyX2A.net
- >>30
再帰。
doの再帰は末尾再帰でなくてもループになる。
- 35 :デフォルトの名無しさん:2018/11/03(土) 16:08:14.93 ID:3NGq3yLp.net
- じゃあ最初からループでよい。関数型バカの遊びに付き合ってやるほど暇ではない。
- 36 :デフォルトの名無しさん:2018/11/03(土) 16:22:09.54 ID:AAuGyX2A.net
- え、このスレの趣旨は?
と言うかHaskellとジャンケンとかで検索したらほぼ手本になる様なの出るだろ。
何の関数型言語使ってるか知らないが、ヒントになりそうな物くらいはググれよ。
- 37 :デフォルトの名無しさん:2018/11/03(土) 16:28:33.22 ID:rSl2Ac3O.net
- フラグ管理をする方法
とスレタイに書いてある
マジでこの板は低学歴知恵遅れしかいない
そしてオレはそのコタエは書いた
もう終了してるハズ
- 38 :デフォルトの名無しさん:2018/11/03(土) 16:55:00.26 ID:dQj0A1Se.net
- >>34
> doの再帰は末尾再帰でなくてもループになる。
話、理解してる?
「ループを再帰でかく⇒再帰をループに戻す」これが本末転倒だって話をしてる所に
「ループじゃなくて再帰を使え、doの再帰はループになる」と本末転倒の話そのものを
持ってきてどうする?話がループしてるwww
- 39 :デフォルトの名無しさん:2018/11/03(土) 17:06:25.69 ID:AAuGyX2A.net
- >>38
うーむ。
説明が難しいな。
入出力のある関数を通常ん関数に使えないので、do付けて手続き型っぽい逐次実行するんだけど、その際のループも再帰で出来るよと。
まあ関数型言語が得意なのは関数みたいな入力ー>出力なのだから、アルゴリズムの勉強に留めて、実践は手続き型言語でやった方がいいと思うけどね。
- 40 :デフォルトの名無しさん:2018/11/03(土) 17:15:10.17 ID:DqN0hP1O.net
- 数学にループという概念がないから苦労してるんだな
ゼロを発見してない文化圏でゼロと同等の事を扱うみたいな馬鹿げた行為にしか見えない
- 41 :デフォルトの名無しさん:2018/11/03(土) 17:23:46.33 ID:AAuGyX2A.net
- 慣れてないからそう思うだけで、慣れればどっちでも。
- 42 :デフォルトの名無しさん:2018/11/03(土) 17:33:53.43 ID:dQj0A1Se.net
- で、なれるのが大変だから、見ての通り
>>1の答えすらでないんやで
- 43 :デフォルトの名無しさん:2018/11/03(土) 17:43:27.37 ID:ZYzZrFY6.net
- えっ
- 44 :デフォルトの名無しさん:2018/11/03(土) 17:43:47.23 ID:ZYzZrFY6.net
- Σはループじやね
- 45 :デフォルトの名無しさん:2018/11/03(土) 18:29:24.38 ID:rSl2Ac3O.net
- ごらんください
コレが見事に低学歴だけが集結した結果のスレ
- 46 :デフォルトの名無しさん:2018/11/03(土) 18:39:57.21 ID:rSl2Ac3O.net
- この板にいるようなヤツラはサル程度の知能しかないのがよおくわかるだろ
この板にいるヤツラのオツム程度は3つの制御の使いかたぐらいしかしらない
この程度での知能ですむ
この程度でのことを延々と書き込んでるワケ
まあサルでもできる程度のことしか、ひたすらずーっとやってないワケ
わかる? 言語なんか方言だからな
コレが日本で求められるPGの姿
低学歴知恵遅れ底辺のドカタでも余裕できる
まさしくこのスレそのもの
- 47 :デフォルトの名無しさん:2018/11/03(土) 18:42:16.18 ID:mzN5JvuB.net
- 最近Haskell書いてないから練習問題にするか
- 48 :デフォルトの名無しさん:2018/11/03(土) 18:49:17.75 ID:rSl2Ac3O.net
- それでいて低学歴知恵遅れの自覚がないからな
- 49 :デフォルトの名無しさん:2018/11/03(土) 19:42:43.36 ID:UfWv76uW.net
- >>31
普通xorつかうだろ
- 50 :デフォルトの名無しさん:2018/11/03(土) 19:44:09.65 ID:UfWv76uW.net
- >>46
30年前にbasicでWindowシステム作ってたぞ
- 51 :デフォルトの名無しさん:2018/11/03(土) 20:04:46.88 ID:AAuGyX2A.net
- >>42
ほらよ。
main = qa [] q >>= return.(zip a) >>=
return.(map (\(x,y) -> check x y)) >>=
return.(trueSum 0) >>= judgment
qa ns [] = return ns
qa ns (x:xs)= putStr x >> getChar >>=
(\c -> print c >> qa (ns ++ [c]) xs)
check a = (a==)
judgment n |n >= 8 = putStrLn "You Win!!"
judgment _ = putStrLn "You Lose..."
trueSum n [] = n
trueSum n (True:xs) = trueSum (n + 1) xs
trueSum n (False:xs) = trueSum n xs
q = ["Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"]
a = "1234123412"
do形式にはそっちで勝手に直してね。(関数型っぽくなくて嫌いなんだ)
久々だったから関数脳が腐りかけてた。
- 52 :デフォルトの名無しさん:2018/11/03(土) 21:21:05.68 ID:ugiNdMW1.net
- >>37
>>51みたいに関数型で書けよ
- 53 :デフォルトの名無しさん:2018/11/04(日) 10:24:11.76 ID:gXTKjRIr.net
- Rubyならこんな感じ。
適当に関数型に変えてくれ。
def aaa(remain, target, ok)
p tmp = rand > 0.5
ok += 1 if tmp
return true if ok >= target
if remain + ok < target
return false
else
return aaa(remain - 1, target, ok)
end
end
remain = 10
target = 8
ok = 0
p ['result =', aaa(remain, target, ok)]
- 54 :デフォルトの名無しさん:2018/11/04(日) 11:07:00.38 ID:Nn4ZdlZB.net
- >>53
なんかキモい
def aaa(remain, target, ok)
return false if remain.zero?
return true if ok >= target
p ans = rand > 0.5
aaa(remain - 1, target, ok + (ans ? 1 : 0))
end
remain = 10
target = 8
ok = 0
p ['result =', aaa(remain, target, ok)]
- 55 :デフォルトの名無しさん:2018/11/04(日) 11:09:26.81 ID:Nn4ZdlZB.net
- return falseの条件を変えて途中で諦めたほうが良いか
- 56 :デフォルトの名無しさん:2018/11/04(日) 11:25:03.38 ID:pidkuN2F.net
- >>51
無駄なコード減らして、解答リストに1〜4以外の文字が入ってたら(あえて)実行時エラーで終了するようにしてみた。
main = elecheck a >> getcheck [] d >>= judgment.trueSum
-- Input char and check anser.
getcheck ns [] = return ns
getcheck ns ((x,y):xs)= putStr x >> getChar >>=
\c -> print c >> getcheck ((y == c):ns) xs
judgment n |n >= 8 = putStrLn "You Win!!"
judgment _ = putStrLn "You Lose..."
trueSum = length.(filter (==True))
-- Check anser array in 1..4 number?
elecheck [] = return ()
elecheck (e:es) |(('1' <= e) && ('4' >= e)) = elecheck es
d = zip q a
q = ["Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"]
a = "1234123412"
- 57 :デフォルトの名無しさん:2018/11/04(日) 11:25:48.26 ID:pidkuN2F.net
- そのdo記法バージョン。
main = do
elecheck a
bs <- getcheck [] d
judgment $ trueSum bs
getcheck ns [] = return ns
getcheck ns ((x,y):xs)= do
putStr x
c <- getChar
print c
getcheck ((y == c):ns) xs
judgment n |n >= 8 = putStrLn "You Win!!"
judgment _ = putStrLn "You Lose..."
trueSum = length.(filter (==True))
elecheck [] = return ()
elecheck (e:es) |(('1' <= e) && ('4' >= e)) = elecheck es
d = zip q a
q = ["Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"]
a = "1234123412"
- 58 :デフォルトの名無しさん:2018/11/04(日) 11:27:53.10 ID:pidkuN2F.net
- 途中で切れてたので再投稿。
main = do
elecheck a
bs <- getcheck [] d
judgment $ trueSum bs
getcheck ns [] = return ns
getcheck ns ((x,y):xs)= do
putStr x
c <- getChar
print c
getcheck ((y == c):ns) xs
judgment n |n >= 8 = putStrLn "You Win!!"
judgment _ = putStrLn "You Lose..."
trueSum = length.(filter (==True))
elecheck [] = return ()
elecheck (e:es) |(('1' <= e) && ('4' >= e)) = elecheck es
d = zip q a
q = ["Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"]
a = "1234123412"
- 59 :デフォルトの名無しさん:2018/11/04(日) 11:28:20.18 ID:pidkuN2F.net
- trueSum = length.(filter (==True))
elecheck [] = return ()
elecheck (e:es) |(('1' <= e) && ('4' >= e)) = elecheck es
d = zip q a
q = ["Q1","Q2","Q3","Q4","Q5","Q6","Q7","Q8","Q9","Q10"]
a = "1234123412"
- 60 :デフォルトの名無しさん:2018/11/04(日) 15:31:56.65 ID:95qKkVOL.net
- >>53
これは酷い。関数型でもなんでもない。
- 61 :デフォルトの名無しさん:2018/11/04(日) 18:52:23.37 ID:pidkuN2F.net
- >>58-59 はiPadのRaskellで動かしたんだけど、PCだと上手く動かない。
(OSのバッファ機能とHaskellの遅延評価の悪い相乗効果)
ここでRWHの内容が活きてくるんだけど、答えは内緒。
- 62 :デフォルトの名無しさん:2018/11/06(火) 23:35:47.99 ID:ceG2/QGJ.net
- 一問ごとに正解なら1、不正解なら0を返す関数を書いて
10個足して8以上ならCドライブをフォーマット
でいいんじゃないの?
- 63 :デフォルトの名無しさん:2018/11/07(水) 15:22:06.59 ID:CUx7JRn8.net
- 全部不正解でいいんじゃね
- 64 :デフォルトの名無しさん:2018/11/07(水) 15:42:00.65 ID:GvDQxrPA.net
- Excelのワークシート関数だけで作ってみると
関数型言語でどう組めばいいかわかるよ!
わかるよ!
- 65 :デフォルトの名無しさん:2018/11/07(水) 16:07:13.80 ID:nS0pqjfr.net
- ていうかそんならExcelでいいじゃねーかw
- 66 :デフォルトの名無しさん:2018/11/07(水) 16:26:15.62 ID:oTVd6hn3.net
- お前らバカにするけどExcelってすげぇソフトだと思うよ俺は。
神エクセルが悪いだけ。
- 67 :デフォルトの名無しさん:2018/11/07(水) 16:31:43.44 ID:h4FWJh3K.net
- >>61
ヒントくらい書くか。
hFlushとhSetBuffering関数をHoogleで調べてね。
>>1 とかじゃんけんゲームみたいなのには必須だよ。
- 68 :デフォルトの名無しさん:2018/11/11(日) 12:43:24.63 ID:vUUak6BF.net
- http://r2.upup.be/wV2qsULdHm
- 69 :デフォルトの名無しさん:2018/11/11(日) 12:47:18.53 ID:SClia95W.net
- >>68
ブラクラ
- 70 :デフォルトの名無しさん:2018/11/14(水) 01:25:26.63 ID:nGPvCKDp.net
- 死亡フラグが立ってます
- 71 :デフォルトの名無しさん:2019/02/04(月) 22:16:29.13 ID:fVmYxPyX.net
- 一応投げとくか
https://ideone.com/8v0bEW
https://gist.github.com/WhiteCat6142/8ad00596e6a5fb0620f4f9921f3b16e9
- 72 :デフォルトの名無しさん:2019/03/11(月) 15:26:25.67 ID:DVt5Y0At.net
- hoogle...英語しか出てこないや
- 73 :デフォルトの名無しさん:2019/04/13(土) 00:45:40.57 ID:WaVEKotj.net
- >>71
datterのx.jsonファイルを見させていただきました
総レス数 73
19 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★