前提・実現したいこと
手続き型プログラミング以外の言語も勉強するという趣旨の授業で、Prologを使ってリストの要素削除の関数を作成するという課題が出されました。
例えば
Prolog
1del(2,[a,b,c,d],L). 2L = [a, c, d] .
のように、最初に削除する要素数を指定し(リストの要素番号は0ではなく1から始まります。このリストではa=1、b=2、c=3...というようになります)、次に削除元となるリストを指定。この削除元リストから最初に指定された要素を削除します。
リストに存在する要素番号を指定した時、削除するプログラムはできたのですが、0以下の数字を指定された時やリストの要素数以上の数を指定したとき、リストをそのまま返す機能をつけたいです。
そこで「該当のソースコード」のように書いてみたのですが以下のようにfalseしか返ってきません。
Prolog
1 ?- del(0,[a,b,c,d],L). 2false.
どのように改良すればいいでしょうか。
該当のソースコード
Prolog
1del(1,[_|L],L). 2del(M,[_],_):- M=<0. 3del(N,[X|L],[X|Z]):- N>0, N1 is N-1, del(N1,L,Z).
https://teratail.com/help/avoid-asking
「学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。」
先生に聞きましょう。
申し訳ございません。学校の課題に関してどこからが駄目なのか分かっておりませんでした。
確認なのですが、私の解釈として、学校の課題をそのままここに投げたり、具体的に自分がした事を書かずに目的のみを書いて解決してほしいという抽象的な質問はアウトと思っていたのですが、具体的に困っている場所を示して、試行錯誤した結果、解決できなかった質問でも、学校の課題ならば駄目なのでしょうか。
(学校の課題ってわざわざ書かなきゃいいのにーって思いますけどね)
正直なのはいいことですが、課題って書いちゃうと大抵は学校の課題なら先生が答え知ってるんだから先生に聞きなさいって思われます。
ですが質問自体にはちゃんと努力した結果が見られるので待ってれば優しい人が回答してくれるかもしれません
そのあたりの解釈は運営に問い合わせて下さい。私は文言どおりにしか判断できません。
また、サイトの利用者としての解釈以前に、学校側がどう考えているかにもよるとは思います。
「他者の力を借りて課題を解く」ことを是としているのか否かは、外部からはわかりません。
そもそも授業料払って(有償で)教育を受ける権利(サポートしてもらう権利)を買っているのに、無償の質問サイトでわざわざ質問する意味がちょっとよくわかりませんけど。
なるほど。前まで書いてなかったのですが前に一度、何でこんな意味無さそうな事をしてるのかと訊かれてから書いた方がいいのかと思い、それから書いていました。
ご親切にありがとうございます。
gentaro様
些細な質問なら学校でするのですが、以前、これが分かれば課題の半分は終わったも同然みたいな質問したところ「それを考えるのが貴方の仕事でしょ」と答えてくれなかったことがあり、それから課題に深くかかわる質問は学校外でするようになっていました。でもそれを言ったのは今回課題を出した先生と違う方なので、一度聞いてみます。ありがとうございました。
聞き方が悪かったのかもしれませんが、「それを考えるのがあなたの仕事でしょ」と講師が言ったのだとすれば、「それを教えるのがあなたの仕事でしょ」と講師に特大ブーメラン返してやりたいですね。
ですが全員に答えを教えてしまっては講師も課題を出す意味がなくなってしまうので、
質問スキルを磨く必要がありますね
「ここがわかりません」じゃなくて、「こうやってみたのですが、こういう動きになってしまって・・・本当はこういう風になる想定だったのですが助けていただけませんか」みたいな()
先生だって人間なので困ってる人間をただ見捨てたりはしないし、持ち上げられればおおそうかそうかと機嫌がよくなって答えてくれるかもしれません。
> 些細な質問なら学校でするのですが、
些細な質問でなくても、授業で学んでいる以上は担当の講師や同じ授業を受けている人に質問しましょう。
オンラインでの質問は基本的に断片的な情報しかなく、意図をきちんと説明して解説してくれる方が有意義です。
> 以前、これが分かれば課題の半分は終わったも同然みたいな質問したところ「それを考えるのが貴方の仕事でしょ」と答えてくれなかったことがあり
ここのところの線引きは難しいかもしれないですが、聞かれたとおりに講師が全て解いてしまったら勉強にならないですよね。「必要なヒントは十分出したのであとは自分で解かないと意味がない」と突っぱねられたとしても多少冷たく感じるかもしれませんが必要な教育だと思います。
しばらく考えてみてやっぱりわからないときは、わからないポイントを整理してから再度質問しましょう。同じことを何度も聞かれると教える側もだんだん辛くなってきます。
それを考えるのがあなたの仕事と言われたなら、人にやらせず自分で考えなきゃいけないのでは?
基本的に、教師が生徒にできない課題を出すことはありません。
出たとすれば、それはあなたができるふりをしているからです。具体的に言えば、今までの課題を他人に解いてもらって、自分でやったことにして提出するなどです。
あなたはできないときには「できない」と伝えなければいけません。そうすれば教育内容が変わります。他の生徒ができる場合にはあなただけ補修という形になるかもしれませんが。
見ていない間に返信が一気に増えたのでまとめて回答させていただきます。
様々なアドバイスありがとうございます。参考にさせていただきます。
回答3件
あなたの回答
tips
プレビュー