トップページtech
25コメント8KB

Haskellの問題

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ハスケルでこういう問題がでました。

8×8マスでチェスのQueenのような動き
(縦、横、斜めすべていける)の駒を1行目から順に置いていく。
8行目までひとつも駒をとられないでいくのは全部で何通りでしょう。

という問題です。だれかこのプログラムを作れる方いらっしゃいますか?
ハスケルを使ってください。わたくしには荷が重過ぎます。
0002デフォルトの名無しさんNGNG
すいません。
問題の意味がわかりません。
0003デフォルトの名無しさんNGNG
漏れも意味がわからん・・・。
よくいう8クイーン問題??

このスレは終了して↓のスレに移動しましょう。

関数型プログラミング言語Haskell
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=996131288
0004デフォルトの名無しさんNGNG
>>1
単発質問スレ立てるな。
宿題を他人にやらせようとするな。
氏ね。

>>2
8-queens 問題って有名だと思うが…。
0005デフォルトの名無しさんNGNG
>>4そんなの学校で習ってないYO!
(って漏れが高卒だからかもしれんが(w)
0006デフォルトの名無しさんNGNG
高卒の漏れでもこんなに発見デキターヨ。
http://www.google.com/search?hl=ja&q=8-queens+Haskell&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0007デフォルトの名無しさんNGNG
ほれほれ。
queens 0 = [[]]
queens (n+1) = [ q:b | b <- queens n; q <- [0..7]; safe q b ]
safe q b = and [ not checks q b i | i <- [0..(b-1)] ]
checks q b i = q=b!!i || abs(q - b!!i)=i+1
00084NGNG
一応>>7に追加
answer = length $ queens 8

>>5
学校では習わないけど有名。

>>7
> [0..7]
すっごい適当というかなんというか…。
0009デフォルトの名無しさんNGNG
ところで、haskell の宿題出すガッコってどこよ?
0010あほらしNGNG
これがコピーされて大量に同じレポートが生成されるんだろうなぁ,ハァ….
0011デフォルトの名無しさんNGNG
ありがとうございました。
無事解決しました。
そこでもう1つお願いします。

魔方陣の問題です。これも有名なのでしょうか。
たとえば3×3のマスに縦、横、斜めそれぞれたすと
すべて同じになる並べ方を探す。

なんかいいサイトみつかりません。
0012デフォルトの名無しさんNGNG
では、まあ、以降は放置の方向で逝くってことで。
0013デフォルトの名無しさんNGNG
わたくしの学校まったく解説してくれないんですよ。
プリント配って自分で考えろってかんじです。
当然Haskellのいろはも教えてくれないで
課題が出るんですよ。
だれか勉強するんで教えてください。
0014デフォルトの名無しさんNGNG
>>13
読め。頑張れ。
http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
http://www.sampou.org/haskell/
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=996131288
0015デフォルトの名無しさんNGNG
ありがとうございます。
1から勉強してみます。
今のわたくしにはこの課題をやるのは非常に大変そうですが、
いろいろやってみます。
0016デフォルトの名無しさんNGNG
>>15
というか,こういう問題のときは
まずは内容を理解してアルゴリズムをちゃんと考えなきゃ.
あなたの知っている言語なら実装できるかということ.
Haskellでそれをどうスマートに実装するかはその後の話.
0017デフォルトの名無しさんNGNG
でも手続き型で書いたのを翻訳するのはどうかなあ..
ハミング列(だっけ?) とかの時に苦労するし。
脳みその構造を切り替えたつもりでカルチャーギャップを味わうのがお勧め。
って、時間がないと大変だけどね!!
0018デフォルトの名無しさんNGNG
今それができるような人ならそもそもこんな質問の仕方はしないと思われ.
先生もこういう課題を出す時点ではそんなハイレベルの解答は期待してないだろうね.
たぶん手続き型っぽくても自分で考えたものの方がポイント高いよ.
0019デフォルトの名無しさんNGNG
プログラミング初心者なものでまず何をしていいのか
わかりませんのです。
というよりどのような単元のところをしていいのかとか。
たとえば数学で言うと複素数のところはそれ相応のやりかたが
あるのと同じように今どの単元をやっているのかすら
わからない状態。
授業は”型””Tree”とやっていきなり課題が出たので
そのへんなのかと思いきやさっきの問題はまったく違うし・・・
大変です。
0020デフォルトの名無しさんNGNG
プログラム初心者に Haskell はキツイよな…
多少はできるものかと思っていたが…
上に出てるテキストもプログラミング初心者向けじゃないようだし…
0021デフォルトの名無しさんNGNG
>>19
ていうか、その前に2ch初心者丸出し。
真面目にアドバイスするけど、単発質問の糞スレ立てたりする前にもう
ちょっと雰囲気を観察してから書き込んだほうがいいよ。
0022デフォルトの名無しさんNGNG
はい。すいません。
以後気をつけます。
0023デフォルトの名無しさんNGNG
>>19
単元,ってところが中高臭いんですが.
0024デフォルトの名無しさんNGNG
いくら何でも中高で Haskell はやらんだろ。
0025デフォルトの名無しさんNGNG
よし、手続き型で書いたのを、Monad使って翻訳して
状態バリバリのコードでいけ!!>>1

でも実は手続き型もまだなのね..
教師がドキュンってにおいもしてきたけど、まあ 1の
ドキュンさを疑うほうが妥当だろうな。

多分、クラスのなかの数人はすくすくと関数型プログラマとして
育っていって、「状態って何? なんで変数の値が変わるの?」
とかいうのになって欲しいな。
綺麗な物しか見せない、という教育方法もありうる :-)
■ このスレッドは過去ログ倉庫に格納されています