いろんな言語で宿題ス ..
196:デフォルトの名無しさん
09/06/16 21:54:22
すみません。再表示です。
t193 :-
t193_1([0,0,0,0,1],[1,0,0,0,0]).
t193_1(L1,L2) :-
L1=[1|_],
★を表示(L1,L2),!.
t193_1(L1,L2) :-
★を表示(L1,L2),
append([A],R1,L1),
append(R1,[A],L3),
append(L4,[B],L2),
t_193_1(L3,[B|L4]).
★を表示([],[]) :- nl.
★を表示([A|R1],[B|R2]) :-
or(A,B,1),
write(★),
★を表示(R1,R2).
★を表示([A|R1],[B|R2]) :-
or(A,B,0),
write(' '),
★を表示(R1,R2).
197:デフォルトの名無しさん
09/06/17 03:32:33
>>196
% Prolog (ちょっとだけ変更)
t193 :-
t193_1([' ',' ',' ',' ',★],[★,' ',' ',' ',' ']).
t193_1(L1,L2) :-
L1=[★|_],
★を表示(L1,L2),!.
t193_1(L1,L2) :-
★を表示(L1,L2),
append([A],R1,L1),
append(R1,[A],L3),
append(L4,[B],L2),
t_193_1(L3,[B|L4]).
★を表示([],[]) :- nl.
★を表示([' '|R1],[' '|R2]) :-
!,
write(' '),
★を表示(R1,R2).
★を表示([_|R1],[_|R2]) :-
write(★),
★を表示(R1,R2).
198:197
09/06/17 03:42:45
% 全角スペースがうまく表示できてない・・・
193 :-
t193_1([' ',' ',' ',' ',★],[★,' ',' ',' ',' ']).
t193_1(L1,L2) :-
L1=[★|_],
★を表示(L1,L2),!.
t193_1(L1,L2) :-
★を表示(L1,L2),
append([A],R1,L1),
append(R1,[A],L3),
append(L4,[B],L2),
t_193_1(L3,[B|L4]).
★を表示([],[]) :- nl.
★を表示([' '|R1],[' '|R2]) :-
!,
write(' '),
★を表示(R1,R2).
★を表示([_|R1],[_|R2]) :-
write(★),
★を表示(R1,R2).
199:デフォルトの名無しさん
09/06/17 04:09:41
スレリンク(tech板:505番)
#[1] 授業単元: C言語
#[2] 問題文
# (1)
# 文字列を受け取る関数(charポインタを使用)
# その文字列の一番最後の文字を消去する関数を作る。
# (2)
# 文字列を受け取る関数(charポインタ使用)
# その文字列の一番最初の文字を消去する関数を作る。
# (3)'文字列を入力し、ある文字を入力。その文字列の中にその入力した文字がいく
つあるかを数える関数。
# 例 文字列 asdfgvbfdcaa 文字aと入力したら 3となる
# その関数は二つのパラメータをもち、一つ目は文字列へのポインタ、二つ目は数えた文
字の数である。
200:デフォルトの名無しさん
09/06/17 04:11:28
>>199
% Prolog
% (1)
'その文字列の一番最後の文字を消去する'(_文字列,_一番最後の文字を消去された文字列
) :-
sub_atom(_文字列,0,Len,1,_一番最後の文字を消去された文字列).
% (2)
'文字列の一番最初の文字を消去する'(_文字列,_一番最初の文字を消去された文字列) :-
sub_atom(_文字列,1,_,0,_一番最初の文字を消去された文字列).
% (3)
文字列中である文字の出現回数(_文字,_文字列,_出現回数) :-
findall(_,sub_atom(_文字列,_,1,_,_文字),L),
length(L,_出現回数).
201:デフォルトの名無しさん
09/06/17 06:19:02
スレリンク(tech板:925番)
# 123456789の順に数字を並べて,数字の間に+,−を補うことで式を作り, その値が100になる# 組み合わせをすべて求め,その式を出力するプログラムを作成しなさい.
# お願いします
202:デフォルトの名無しさん
09/06/17 07:47:20
>>201
% Prolog
t201 :-
findall(Q,t201(Q),L),
member(A,L),
write(A),
nl;
true.
t201(Q) :-
符号を含むならびの生成([1,2,3,4,5,6,7,8,9],L),
atom_chars(S,L),
atom_to_term(S,Q,_),
100 is Q.
符号を含むならびの生成([A],[A]).
符号を含むならびの生成([A|R1],[A|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'+'|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'-'|R2]) :-
符号を含むならびの生成(R1,R2).
203:デフォルトの名無しさん
09/06/17 08:28:48
% 間違いがありました。訂正します。
% atom_chars/2 の第二引数リストの要素はcharしか許されないので
t201 :-
findall(Q,t201(Q),L),
member(A,L),
write(A),
nl;
true.
t201(Q) :-
符号を含むならびの生成(['1','2','3','4','5','6','7','8','9'],L),
atom_chars(S,L),
atom_to_term(S,Q,_),
100 is Q.
符号を含むならびの生成([A],[A]).
符号を含むならびの生成([A|R1],[A|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'+'|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'-'|R2]) :-
符号を含むならびの生成(R1,R2).
204:デフォルトの名無しさん
09/06/17 08:41:07
% もう一ヶ所訂正。fail が落ちていた。
t201 :-
findall(Q,t201(Q),L),
member(A,L),
write_formatted('%t\n',[A]),
fail.
t201.
t201(Q) :-
符号を含むならびの生成(['1','2','3','4','5','6','7','8','9'],L),
atom_chars(S,L),
atom_to_term(S,Q,_),
100 is Q.
符号を含むならびの生成([A],[A]).
符号を含むならびの生成([A|R1],[A|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'+'|R2]) :-
符号を含むならびの生成(R1,R2).
符号を含むならびの生成([A|R1],[A,'-'|R2]) :-
符号を含むならびの生成(R1,R2).
205:デフォルトの名無しさん
09/06/17 08:47:44
>>200 ですが、
これではPrologが誇るスーパー組込み述語 sub_atom/5 の
リファレンスの意味しかないので、sub_atom/5を使わない版を
後で示します。
それからアトムに対して文字列という言葉を使っていることに、
違和感を覚える方がおられると思いますが、私は"文字列"は
絶対といっていいくらい使いません。私の書き込みで文字列と
言うときは文字列アトムのことだと思ってください。
206:デフォルトの名無しさん
09/06/17 09:07:55
スレリンク(tech板:514番)
#[1]授業単元:プログラミング演習1
#
#[2]問題文:画面より入力した成績データをファイルに登録する。
# 画面より入力する項目は以下のとおり。
# ・生徒コード、数字6桁、数字であること。
# ・氏名、文字列20文字、1字以上、20字以内
# ・国語(点数)、数字3桁、数字であること、0<=点数<=100
# ・算数(点数)、国語と同じ
# ・社会(点数)、国語、算数と同じ
#
#
# 生徒コードに999999が入力されたら終了する。
207:デフォルトの名無しさん
09/06/17 10:55:36
>>206
% Prolog
URLリンク(nojiriko.asia)
208:デフォルトの名無しさん
09/06/17 16:53:31
>>206 一部書き直しました。
% Prolog
URLリンク(nojiriko.asia)
209:デフォルトの名無しさん
09/06/17 17:09:49
>>206
-- Haskell
URLリンク(ja.pastebin.ca)
210:デフォルトの名無しさん
09/06/17 18:05:15
スレリンク(tech板:550番)
#
# (1)曜日を表す英語と日本語との対応を表すハッシュwdayを定義しなさい
#
# p wday["sunday"] #=> "日曜日"
# p wday["monday"] #=> "月曜日"
# p wday["saturday"] #=> "土曜日"
#
# (2)ハッシュのメソッドを使って(1)のハッシュwdayのペアの数を数えなさい
#
# (3)eachメソッドと(1)のハッシュwdayを使って以下の文字列を出力させてくださ
い。
# 「sunday」は日曜日のことです。
# 「monday」は月曜日のことです。
# …
#
# (4)ハッシュには配列の%wのようなものがありません。そこで、空白とタブと改行
# (正規表現で定義するなら「/\s+/」)で区切られた文字列をハッシュに変換するメ
ソッド
# str2hashを定義してください。
#
# p str2hash("bule 青 white 白\nred赤");
# #=> {"bule"=>"青", "white"=>"白", "red"=>"赤"}
211:デフォルトの名無しさん
09/06/17 18:10:18
>>210
% Prolog (Prologにハッシュはないよw したがって・・)
% (1)
wday(sunday,日曜日).
wday(monday,月曜日).
wday(saturday,土曜日).
% (2)
wdayの節数(_節数) :- 節数(wday(_,_),_節数).
節数(_節形式,_節数) :- findall(_,_節形式,L),length(L,_節数).
% (3)
'(3)' :-
wday(A,B),
write_formatted('「%t」は%tのことです。\n',[A,B]),
fail;
true.
% (4)
str2hash(S,_述語名) :-
split(S,['\n'],L),
member(A,L),
split(A,['\t',' '],L1),
P =.. [_述語名|L1],
assertz(P),
fail;
true.
212:デフォルトの名無しさん
09/06/17 20:13:52
>>210
-- Haskell
URLリンク(ja.pastebin.ca)
213:デフォルトの名無しさん
09/06/17 21:26:01
VB6をやっているのですが、
「ストアド関数」というものが、
いまいちどういう役割を担っているものなのかわかりません。
MSDNを見たりウェブで調べたりはしたのですが…
宜しければ、どなたかお願いします。
214:デフォルトの名無しさん
09/06/18 04:16:40
スレリンク(tech板:580番)
#[1] 授業単元: プログラミング演習
#[2] 問題文: 人の名前(ローマ字)を検索(部分一致)することができるプログラムを作成せよ。
215:デフォルトの名無しさん
09/06/18 04:29:48
>>214
% Prolog (最初に組込述語から)
t214(_人の名前,_検索文字列の変位,_その長さ,_残った文字列長さ,_検索文字列) :-
sub_atom(_人の名前,_検索文字列の変位,_その長さ,_残った文字列長さ,_検索文字列).
?- t214('Hitomaro Kakinomoto',A,B,C,'kino').
A = 11,
B = 4,
C = 4;
no
?- /* >>200 参照 */
216:デフォルトの名無しさん
09/06/18 05:37:47
>>214
% Prolog >>215 をより使いやすくするため sChars/6 を定義する。
sChars(A,B,C,D,E,F) :- sub_atom(A,B,C,D,E),C > 0,atom_chars(E,F).
% これでkから始まりoで終わる部分文字列の検索などがやり易くなる。
?- sChars('Hitomaro Kakinomoto',B,C,D,E,F),append([k|_],[o],F).
B = 11,
C = 4,
D = 4,
E = kino,
F = [k,i,n,o],
_ = [i,n];
B = 11,
C = 6,
D = 2,
E = kinomo,
F = [k,i,n,o,m,o],
_ = [i,n,o,m];
B = 11,
C = 8,
D = 0,
E = kinomoto,
F = [k,i,n,o,m,o,t,o],
_ = [i,n,o,m,o,t];
no.
?-
217:デフォルトの名無しさん
09/06/18 06:02:02
>>216
% Prolog より一般的にsCharsという述語の中に検索条件を書き込めないであろうか?
% sChars/7を定義する。_検索条件項の中でEかFを使用しなければならない。
sChars(_検索条件項,A,B,C,D,E,F) :- sChars(A,B,C,D,E,F),call(_検索条件項).
% >>216 に較べてこちらの方が優れているかは疑問だ。
218:デフォルトの名無しさん
09/06/18 06:10:49
>>217
% Prolog 例えば正規表現(に限らないが)を処理するには、
sChars(_正規表現パターン,A,B,C,D,E,F) :- sChars(A,B,C,D,E,F), ... 正規表現パターンの解決副目標(_正規表現パターン), ...
sChars(_検索条件項,A,B,C,D,E,F) :- sChars(A,B,C,D,E,F),call(_検索条件項).
% のように上に定義を加えていけばよい。
219:デフォルトの名無しさん
09/06/18 06:38:52
スレリンク(tech板:560番)
#[1] 授業単元: C
#[2] 問題文(含コード&リンク):アルファベットの小文字を大文字に変換するプログラムを作成せよ
# ヒント: 'a'〜'z'は連続した文字コードが割り当てられている。'A'〜'Z'も連続した文字コードが割り当てられている。すなわち、'a'の文字コード
# にある定数を足す(または引く)と'A'になり、'b'にその定数を足す(または引く)と'B'になる。この定数さえ求められれば、簡単に計算できることがわかる。
# 定数は、'a'や'A'を使えば計算できる。
220:デフォルトの名無しさん
09/06/18 07:01:41
>>219
% Prolog 敢えて、出題の題意通りやってみる。
英小文字から大文字へのコード変換(_英小文字,_英大文字) :-
char_code(a,_aの文字コード),
char_code('A',_Aの文字コード),
_変位 is _aの文字コード - _Aの文字コード,
char_code(_英小文字,_英小文字の文字コード),
_英大文字の文字コード is _英小文字の文字コード - _変位,
char_code(_英大文字,_英大文字の文字コード).
221:デフォルトの名無しさん
09/06/18 07:13:10
>>220
% 双方向性を持たせよう。少し無理をする。
英小文字大文字変換(_英小文字,_英大文字) :-
char_code(a,_aの文字コード),length(L1,_aの文字コード),
char_code('A',_Aの文字コード),length(L2,_Aの文字コード),
append(L2,R,L1),
char_code(_英小文字,_英小文字の文字コード),length(L3,_英小文字の文字コード),
append(R2,R,L3),length(R2,_英大文字の文字コード),
char_code(_英大文字,_英大文字の文字コード).
222:デフォルトの名無しさん
09/06/18 07:29:55
>>221
すみません。これだとやっぱりだめだ。
char_code/2を使う以上は、変数の有無だけは検査しないといけないのかな。
ちょっと考えます・・・
文字連鎖('A','B').
文字連鎖('B','C').
...
文字連鎖('Z','A').
...
文字連鎖(a,b).
文字連鎖(b,c).
・・・
文字連鎖(z,a).
を定義しないと無理かな。
223:デフォルトの名無しさん
09/06/18 07:40:21
>>222
% この定義があればなんとかなるか。
英小文字([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]).
英大文字(['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R
','S','T','U','V','W','X','Y','Z']).
224:デフォルトの名無しさん
09/06/18 08:06:43
>>222
% 実は、
英小文字大文字変換(_英小文字,_英大文字) :-
英大文字ならび(LL),append(L1,[_英大文字|_],LL),
英小文字ならび(SL),append(L2,[_英小文字|_],SL),
length(L1,Len),
length(L2,Len).
英大文字ならび(L) :- findall(C,(for(65,N,90),char_code(C,N)),L).
英小文字ならび(L) :- findall(C,(for(97,N,122),char_code(C,N)),L).
% で済むようです。まあ、ペアで定義すればいいだけですが。
225:デフォルトの名無しさん
09/06/18 09:33:49
スレリンク(tech板:548番)
# [1] 授業単元: プログラミング論
# [2] 問題文(含コード&リンク): C言語で三目並べをするプログラムの作成
# C言語で三目並べ(いわゆる○×)をするプログラムを作成する。
#
# # 条件
# ・コンピュータの手はランダムに決定するものとする(空いているところに打つ)
# ・盤面を表現する配列は3×3の二次元配列とし、グローバルに宣言する
# ・以下のような関数を作成すること:盤の表示、○×を打つ、3つ並んだかチェック
# ・他にも必要に応じて関数を宣言すること
#
# ヒント集
# ・マスの状態は空:0 ○:1 ×:2など数値で定義するとよい。
# ・char stone[3][3]={"-","○","×"};などと宣言しておくと便利?
# ・9マスしかないので、9マス打ち切ったら終了→このとき勝敗が決まっていなければ引
き分け
# ・ループの考え方は2通りできる
# 1.先手後手がセットで1ループ、9マス目に先手が打ったらbreak
# 2.先手、後手それぞれ1ループ,nマス目は、n%2=0なら先手、n%2=1な ら後手
# ・三目並んだかのチェックは工夫のしどころ
# ・手盤の人の石だけチェックする
# ・打ったところの縦横は必ずチェック、斜めはどうする?
# ・作っていく順
# ・石の入力+盤面表示、コンピュータの手番、3つ並んだかチェック、勝敗表示
# ・石の入力+盤面表示、3つ並んだかチェック、勝敗表示、コンピュータの手番
226:デフォルトの名無しさん
09/06/18 09:39:35
スレリンク(tech板:554番)
# [1] 授業単元: c言語演習
# [2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
227:デフォルトの名無しさん
09/06/18 09:41:34
スレリンク(tech板:551番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# cos(x)とx軸で囲まれる領域において、xがa〜bの区間の面積を台形積分で求めるプログラムを作成しなさい。
# なお、aとbは引数として与えるようにすること。
228:デフォルトの名無しさん
09/06/18 14:56:57
>>227
できますた
これでいいですか?
↓
(defun s (a b)
(let ((ya (cos a)) (yb (cos b)))
(/ (* (- b a) (+ ya yb)) 2)))
229:デフォルトの名無しさん
09/06/18 16:46:28
>>227
% Prolog
'cos(x)とx軸で囲まれる領域において、xがa〜bの区間の面積を台形積分で求める'(_開始
X座標,_終了X座標,X) :-
分割数(_分割数),
_開始X座標2 is _開始X座標,
_終了X座標2 is _終了X座標,
刻み幅(_分割数,_開始X座標2,_終了X座標2,_刻み幅),
Y座標ならびを得る(_分割数,_分割数,_開始X座標2,_終了X座標2,_Y座標ならび),
台形の総面積(_Y座標ならび,_刻み幅,X).
分割数(30).
台形の総面積([A,B],_刻み幅,X) :-
X is (A+B) * _刻み幅 / 2,!.
台形の総面積([A,B|R],_刻み幅,X) :-
Z is (A+B) * _刻み幅 / 2,
台形の総面積([B|R],_刻み幅,Y),
X is Z + Y.
Y座標ならびを得る(_分割数,_分割数,_開始X座標,_終了X座標,[A]) :-
A is cos(_終了X座標),!.
Y座標ならびを得る(N,_分割数,_開始X座標,_終了X座標,[A|R]) :-
A is cos(((_終了X座標-_開始X座標) * N / _分割数 + _開始X座標)),
Y座標ならびを得る(M,_分割数,_開始X座標,_終了X座標,R).
刻み幅(_分割数,_開始X座標,_終了X座標,_刻み幅) :-
_刻み幅 is (_終了X座標-_開始X座標) / _分割数.
230:デフォルトの名無しさん
09/06/18 17:24:52
>>226
% Prolog
gcd(M,N,N) :-
0 is M mod N,!.
gcd(M,N,X) :-
Mod is M mod N,
gcd(N,Mod,X).
gcd(M,N,O,X) :-
gcd(M,N,Y),
gcd(Y,O,X).
231:デフォルトの名無しさん
09/06/18 17:26:54
>>226 書き直し
% Prolog
gcd(M,N,N) :-
0 is M mod N,!.
gcd(M,N,X) :-
Mod is M mod N,
gcd(N,Mod,X).
gcd(M,N,O,X) :-
gcd(M,N,Y),
gcd(Y,O,X).
232:デフォルトの名無しさん
09/06/18 17:46:05
>>228
ニュートン・コーツ とか
区分求積法 でググれ
233:デフォルトの名無しさん
09/06/18 18:28:43
スレリンク(tech板:592番)
# [1] 授業単元: C
# [2] 問題文(含コード&リンク):入力した文字の種類を表示するプログラムを作成せよ。ただし、表示は次に従うとする
# 入力キーA〜Z 表示メッセージ 英大文字です
# 入力キーa〜z 表示メッセージ 英小文字です
# 入力キー0〜9 表示メッセージ 数字です
# 上記以外 表示メッセージ その他のキャラクターです
234:デフォルトの名無しさん
09/06/18 18:32:23
>>233
% Prolog
入力した文字の種類を表示するプログラム(_文字,_文字の種類) :-
文字の範疇(_文字の範疇,_文字),
表示は次に従うとする(_文字の範疇,_,_表示メッセージ),
write(_表示メッセージ).
表示は次に従うとする(入力キーA〜Z,表示メッセージ,英大文字です).
表示は次に従うとする(入力キーa〜z,表示メッセージ,英小文字です).
表示は次に従うとする(入力キー0〜9,表示メッセージ,数字です).
表示は次に従うとする(上記以外,表示メッセージ,その他のキャラクターです).
文字の範疇(入力キーA〜Z,_文字) :-
member(_文字,['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']).
文字の範疇(入力キーa〜z,_文字) :-
member(_文字,[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]).
文字の範疇(入力キー0〜9,_文字) :-
member(_文字,['0','1','2','3','4','5','6','7','8','9']).
文字の範疇(上記以外,_文字) :-
not(member(_文字,['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'])),
文字の範疇(入力キーa〜z,_文字) :-
member(_文字,[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]).
文字の範疇(入力キー0〜9,_文字) :-
member(_文字,['0','1','2','3','4','5','6','7','8','9']).
文字の範疇(上記以外,_文字) :-
not(member(_文字,['A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P',
'Q','R','S','T','U','V','W','X','Y','Z'])),
not(member(_文字,[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z])),
not(member(_文字,['0','1','2','3','4','5','6','7','8','9'])).
235:デフォルトの名無しさん
09/06/18 18:40:39
>>233 訂正
% Prolog
入力した文字の種類を表示するプログラム(_文字) :-
文字の範疇(_文字の範疇,_文字),
% 2引数ではなく、1引数の述語です。削り忘れてました。
% なんて冗長な馬鹿なプログラムだと思われるでしょうが、渡された
% 仕様を可能な限りそのまま利用して、何も考えずにプログラムすると
% こんな事になるという例です。
入力した文字の種類を表示するプログラム(_文字,_文字の種類) :-
表示は次に従うとする(_文字の範疇,_,_表示メッセージ),
文字の範疇(_文字の範疇,_文字),
write(_表示メッセージ).
% 順序をひっくり返してもちゃんと動作します。開発順序としては
% この述語を作ってから、2行目と3行目を入れ替えました。
236:デフォルトの名無しさん
09/06/18 20:51:57
スレリンク(tech板:615番)
# [1] 授業単元: C初心者コース
# [2] 問題文(含コード&リンク):試験の点数(100点満点)を入力すると、評価値(A+,A,B,C,F)を表示する
# プログラムを作れ90〜100A+80〜89A70〜79B60〜69C0〜59Fそれ以外error
# [3] 環境
# [3.1]linux
# [3.2] gcc
# [3.3]C
# [4]6月19日
# [5]if文(gotoは論外)while do while for等 ループ文を使ってはいけないそうです
237:デフォルトの名無しさん
09/06/18 20:55:20
>>236
% Prolog
評価値(_点数,'A+') :- _点数>=90,_点数=<100.
評価値(_点数,'A') :- _点数>=80,_点数=<89.
評価値(_点数,'B') :- _点数>=70,_点数=<79.
評価値(_点数,'C') :- _点数>=60,_点数=<69.
評価値(_点数,'F') :- _点数>=0,_点数=<59.
評価値(_,error).
238:デフォルトの名無しさん
09/06/18 23:44:11
スレリンク(tech板:737番)
#【 課題 】適当な文字列を入力して、暗号化するプログラムを作る。
# 暗号キーは2桁で、暗号文は奇数番目と偶数番目の文字列を、
# 暗号キーの値だけ交互にずらして作成する。
# 使用する文字種は「!」から「z」までの90個とする(0x21~0x7A)。
# またを超えたら!に戻すこと。
239:デフォルトの名無しさん
09/06/18 23:46:10
>>238
% Prolog
URLリンク(nojiriko.asia)
240:デフォルトの名無しさん
09/06/19 07:51:19
スレリンク(tech板:650番)
# [1] 授業単元: C
# [2] 問題文(含コード&リンク):キーボードから入力された1以上の整数nについて、
# 次の例に示すように行番号と*を表示するプログラムを作成せよ。
# なお、*の数は、1行目はn個とし、1行毎に1ずつへっていくこととする。
# また、0や負の数が入力された場合はプログラムが終了するようにせよ。
241:デフォルトの名無しさん
09/06/19 07:58:05
>>240
% Prolog
% 述語 同一要素ならび/3 は事実上の組込述語ですね
t240(N) :-
for(N,M,1),t240_1(M),N=1.
t240_1(N) :-
同一要素ならび(*,L,N),
concat_atom([N|L],S),
write_formatted('%t\n',[S]).
同一要素ならび(_要素,List,Length) :-
length(List,Length),
同一要素ならび(_要素,List) .
同一要素ならび(_,[]).
同一要素ならび(A,[A|R]) :-
同一要素ならび(A,R).
242:デフォルトの名無しさん
09/06/19 14:42:10
スレリンク(tech板:674番)
# [1] 授業単元:プログラム
# [2] 4*3行列Aと 3*5行列B の各要素をキーボードから入力し、
# C = A*B を計算し、表示するプログラムを作成せよ。
243:デフォルトの名無しさん
09/06/19 14:43:51
>>242
% Prolog 少し前に一度あった。
URLリンク(nojiriko.asia)
244:デフォルトの名無しさん
09/06/19 14:47:02
スレリンク(tech板:669番)
# 内容:
# [1] 授業単元: プログラミング論
# [2] 問題文(含コード&リンク):
# 1からnまでの整数値の和を再帰的に求めるプログラムを作成する
# [実行結果の例]
# 1からnまでの整数値の和を計算します
# nの値を入力してください:100
# 1から100までの整数値の和は5050です
245:デフォルトの名無しさん
09/06/20 04:31:12
>>149 >>150
% Prolog (下請け述語を改変)
% スレリンク(tech板:289番) 参照
交互にならべた文字列(Str1,Str2,Str) :-
atom_chars(Str1,Chars1),
atom_chars(Str2,Chars2),
交互にならべた文字列_1(Chars1,Chars2,Chars3),
atom_chars(Str,chars3).
交互にならべた文字列_1([],L,L) :- !.
交互にならべた文字列_1([A|R1],L2,[A|R]) :-
交互にならべた文字列_1(L2,R1,R)..
?- 交互にならべた文字列(abcde,opq,X).
X = aobpcqde;
no
?-
246:デフォルトの名無しさん
09/06/20 04:58:24
>>246
もっと一般化したら・・
二つの文字列を交互に併合する(Str1,Str2,Str) :-
atom_chars(Str1,Chars1),
atom_chars(Str2,Chars2),
順併合(Chars1,Chars2,Chars3),
atom_chars(Str,chars3).
順併合([],L,L) :- !.
順併合([A|R1],L2,[A|R]) :-
順併合(L2,R1,R).
247:デフォルトの名無しさん
09/06/20 05:37:07
>>246
順併合というソートと誤解されるかな。
二つの文字列を交互に併合する(Str1,Str2,Str) :-
atom_chars(Str1,Chars1),
atom_chars(Str2,Chars2),
交互併合(Chars1,Chars2,Chars3),
atom_chars(Str,chars3).
交互併合([],L,L) :- !.
交互併合([A|R1],L2,[A|R]) :-
交互併合(L2,R1,R).
248:デフォルトの名無しさん
09/06/20 08:33:46
ということは、
>>238 >>239 文字コードによる暗号化/3 も以下がよい。
文字列の暗号化(_鍵整数,_元の文字列,_暗号文字列) :-
integer(_鍵整数),
_鍵整数>=10
_鍵整数=<99,
atom_codes(_元の文字列,Codes),
_奇数番目の鍵 is _鍵整数 // 10,
_偶数番目の鍵 is _鍵整数 mod 10,
文字コードによる暗号化(_奇数番目の鍵,_偶数番目の鍵,Codes,_暗号Codes),
atom_codes(_暗号文字列,_暗号Codes).
文字コードによる暗号化(_,_,[],[]) :- !.
文字コードによる暗号化(_鍵1,_鍵2,[A|R1],[B|R2]) :-
一文字の暗号化(_鍵1,A,B),
文字コードによる暗号化(_鍵2,_鍵1,R1,R2).
一文字の暗号化(_変位,_文字コード,_暗号化された文字コード) :-
_文字コード+_変位 =< 122,!,
_暗号化された文字コード is _文字コード+_変位.
一文字の暗号文字化(_変位,_文字コード,_暗号化された文字コード) :-
_文字コード+_変位 >122,!,
_暗号化された文字コード is _文字コード+_変位-90.
249:248
09/06/20 08:47:22
ごめんなさい。>>238 を更新してしまった。
これでは以前との比較ができない。もう一度復元しますから、少し待って。
250:デフォルトの名無しさん
09/06/20 09:01:05
>>249 >>239 の話でした。元々はこうなっていたはずです。
文字コードによる暗号化(_,_,[],[]).
文字コードによる暗号化(_奇数番目の鍵,_,[A],[C]) :-
一文字の暗号化(_奇数番目の鍵,A,C).
文字コードによる暗号化(_奇数番目の鍵,_偶数番目の鍵,[A,B|R1],[C,D|R2]) :-
一文字の暗号化(_奇数番目の鍵,A,C),
一文字の暗号化(_偶数番目の鍵,B,D),
文字コードによる暗号化(_奇数番目の鍵,_偶数番目の鍵,R1,R2).
251:デフォルトの名無しさん
09/06/20 19:19:22
スレリンク(tech板:750番)# 【 課題 】
# String a ="@test あいう@aaaおえてURLリンク(test.com)と";
# aから@から始まるアルファベットとURLを取り除く処理
# System.out.println(a);
#
# 出力結果
# あいうおえてと
#
# aから@から始まるアルファベットとURLを取り除く処理はどのように書けばいいのでし
ょうか?
252:デフォルトの名無しさん
09/06/20 19:44:01
>>251
% Prolog
t251(_文字列,_取り除いた文字列) :-
atom_chars(_文字列,Chars),
t251_1(Chars,L),
atom_chars(_取り除いた文字列,L).
t251_1([],[]) :- !.
t251_1([@|R1],R2) :-
t251_2(R1,R2),!.
t251_1([h,t,t,p,:,/,/|R1],R2) :-
t251_2(R1,R2),!.
t251_1([A|R1],[A|R2]) :-
t251_1(R1,R2).
t251_2([],[]) :- !.
t251_2([A|R1],R2) :-
A @>=' ',
A @=< z,!,
t251_2(R1,R2).
t251_2(L,R2) :-
t251_1(L,R2).
253:デフォルトの名無しさん
09/06/21 04:51:24
スレリンク(tech板:708番)
# 入力件数nをキーボードより入力し、n人分のテストデータを入力する。
# その際、合計点、最高点、最低点を求め、最後に平均点を計算しそれぞれを出力するプログラムを作成せよ。
# ただし、平均点は実数型とし小数点第2位まで出力する。
# 平均点以外の変数は整数型とする。
#
# 問A棒グラフ出力プログラム
# 値2つを入力し、*を横に並べて棒グラフ状に出力するプログラム。
# 大きい値の方の棒グラフが上に来るようにすること。
# (値として0〜50までしか入力されないものとする)
254:デフォルトの名無しさん
09/06/21 05:43:15
>>253 問A棒グラフ出力プログラム
% Prolog
t253_2(A,B) :-
t253_2_make_list(50,A,B,L),
t253_2_print(L).
t253_2_make_list(0,_,_,[]).
t253_2_make_list(N,A,B,[[X1,X2]|R]) :-
( N > A,X1=' ';N =< A,X1='*'),
( N > B,X2=' ';N =< B,X2='*'),
N2 is N - 1,
t253_2_make_list(N2,A,B,R).
t253_2_print([],[]).
t253_2_print([F|R1],[B|R2]) :-
write_formatted(' %t %t\n',F),
t253_2_print(R1,R2).
255:デフォルトの名無しさん
09/06/21 05:47:01
>>254 間違えた。t253_2_printを直すの忘れてた。
% Prolog
t253_2(A,B) :-
t253_2_make_list(50,A,B,L),
t253_2_print(L).
t253_2_make_list(0,_,_,[]).
t253_2_make_list(N,A,B,[[X1,X2]|R]) :-
( N > A,X1=' ';N =< A,X1='*'),
( N > B,X2=' ';N =< B,X2='*'),
N2 is N - 1,
t253_2_make_list(N2,A,B,R).
t253_2_print([]).
t253_2_print([L|R]) :-
write_formatted(' %t %t\n',L),
t253_2_print(R).
256:デフォルトの名無しさん
09/06/21 06:25:06
スレリンク(tech板:742番)
# [1] 授業単元: C
# [2] 問題文(含コード&リンク):年r%の複利でy円を借り、n年後に一括返済する場合の返済額を計算するプログラムを作成せよ
# ただしr%の複利でn年借りた場合の利率を計算する部分を関数として作成すること。
# 表示結果の例
# 利率(r):7.5
# 金額(y):1000000
# 期間(n):2
# 返済金額は1155625
# ヒント:返済金額はy(1+r/100)のn乗円である。r%の複利でn年間の利率(1+r/100)のn乗を計算する関数
# float interest(float r, int n)を作る。そしてmain()からinterest()を呼び出し、返された値にyを掛けて返済額を求める。
257:デフォルトの名無しさん
09/06/21 12:51:45
スレリンク(tech板:748番)
#【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
#【 形態 】Javaアプリケーション(main()で開始)
# URLリンク(rg550.hp.infoseek.co.jp)
上記仕様は意味不明のところがあり、
入力ファイルを以下のように変更しましょう。
売上明細ファイル
1)支店コード(数値3byte)
2)販売日(yyyymmdd)
3)販売先コード(数値6byte)
4)売上金額(数値8byte)
支店名ファイル
1)支店コード(数値3byte)
2)支店名(文字10byte)
販売先名ファイル
1)販売先コード(数値6byte)
2)販売先名(文字30byte)
258:デフォルトの名無しさん
09/06/21 15:00:09
>>251 >>252 URLのチェックの認識部分を修正
% Prolog
t251(_文字列,_取り除いた文字列) :-
atom_chars(_文字列,Chars),
t251_1(Chars,L),
atom_chars(_取り除いた文字列,L).
t251_1([],[]) :- !.
t251_1([' '|R1],R2) :-
t251_1(R1,R2),!.
t251_1([@|R1],R2) :-
t251_2(R1,R2),!.
t251_1(L,R2) :-
url_check(L,R1),
t251_2(R1,R2),!.
t251_1([A|R1],[A|R2]) :-
t251_1(R1,R2).
url_check([h,t,t,p,:,/,/|R],R) :- !.
url_ckeck([h,t,t,p,s,:,/,/,|R],R) :- !.
url_check([f,t,p,:,/,/|R],R) :- !.
url_check([f,i,l,e,:,/,/|R],R) :- !.
t251_2([],[]) :- !.
t251_2([A|R1],R2) :-
A @>' ',
A @=< z,!,
t251_2(R1,R2).
t251_2(L,R2) :-
t251_1(L,R2).
259:デフォルトの名無しさん
09/06/21 19:17:19
スレリンク(tech板:765番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# 診断プログラムを作ろう
# 「計算ドリル」。質問文全てを一つの文字列配列に格納し、その順番に表示しましょう
。正解するたびに、
# tokuten を増やすことで、最後に「あなたは 5 問正解です」みたいな結果を表示させ
ることが出来ます。
# char questions[6][100]={
# “12×(3+4)=”, “(1+1÷9)×9=”,
# “(29‐5)÷(17‐11)=”, “2の10乗=”,
# “(3×9+44÷2)のルート=”, “8の階乗=”};
# ソースプログラム、変数の意味、工夫した点を書きなさい
260:デフォルトの名無しさん
09/06/21 19:21:42
>>259
% Prolog
計算ドリル :-
write('五問出題します。すぐに答えてください\n'),
質問(L1),
正解(L2),
計算ドリル(L1,L2,0,X),
write_formatted('%t問正解です\n',[X]).
計算ドリル([],_,N,N) :- !.
計算ドリル([A|R1],[B|R2],N,X) :-
write(A),
get_line(S),
atom_to_term(S,B),
M is N + 1,
計算ドリル([A|R1],[B|R2],M,X),!.
計算ドリル([_|R1],[_|R2],N,X) :-
計算ドリル(R1,R2,N,X).
質問(['12×(3+4)=',
'(1+1÷9)×9=',
'(29‐5)÷(17‐11)=',
'2の10乗=',
'(3×9+44÷2)のルート=',
'8の階乗=']).
正解([84,10,4,1024,7,40320]).
261:260
09/06/21 20:08:59
% 正解かどうかを示すタイミングは
計算ドリル([],_,N,N) :- !.
計算ドリル([A|R1],[B|R2],N,X) :-
write(A),
get_line(S),
atom_to_term(S,B),
write('正解です!\n'),
M is N + 1,
計算ドリル([A|R1],[B|R2],M,X),!.
計算ドリル([_|R1],[B|R2],N,X) :-
write('残念でした!! 正解は%tですね\n',[B]),
計算ドリル(R1,R2,N,X).
262:デフォルトの名無しさん
09/06/21 20:37:25
% 一般的には以下のような定義にします。これだと不正解の時にもSを表示できます。
計算ドリル([],_,N,N) :- !.
計算ドリル([A|R1],[B|R2],N,X) :-
write(A),
get_line(S),
正誤の判定(S,B,N,N2),
計算ドリル(R1,R2,N2,X).
正誤の判定(S,B,N,N2) :-
atom_to_term(S,B1),
B1 = B,
write('正解です!\n'),N2 is N + 1,!.
正誤の判定(S,B,N,N) :-
atom_to_term(S,B1),
integer(B1),
not(B1=B),
write_formatted('残念でした!! 正解は%tですね\n',[B]),!.
正誤の判定(S,B,N,N) :-
atom_to_term(S,B1),
not(integer(B1)),
write_formatted('入力に形式的な誤りがあったようです\nあなたは%tと入力しました\n',[S]).
263:デフォルトの名無しさん
09/06/21 22:02:23
>>256
% Prolog
interest(R,N,X) :-
X is (1+R/100)^N.
返済額(Y,R,N,,X) :-
interrest(R,N,Z),
X is Y * Z.
264:デフォルトの名無しさん
09/06/22 04:34:04
スレリンク(tech板:580番)
# 【質問テンプレ】
# [1] 授業単元: プログラミング演習
# [2] 問題文: 人の名前(ローマ字)を検索(部分一致)することができるプログラム
を作成せよ。
265:デフォルトの名無しさん
09/06/22 14:46:14
>>264
% Prolog こういう処理のためのユーティリティ sub_atom/10 を提案する。
URLリンク(nojiriko.asia)
266:デフォルトの名無しさん
09/06/22 17:23:44
スレリンク(tech板:878番)
#エラトステネスの篩
#(コードは煩雑そうに見えるが、速度が圧倒的に速い。
# 大きな数までの素数表が必要な場合に必要な方法。)
% 宿題には見えないんだが・・
267:デフォルトの名無しさん
09/06/22 17:27:40
>>266
% Prolog
素数生成(N,X) :-
findall(M,for(2,M,N),L),
エラトステネスの篩(L,X).
エラトステネスの篩([],[]) :- !.
エラトステネスの篩([A|R1],[A|R2]) :-
エラトステネスの篩(A,R1,L),
エラトステネスの篩(L,R2).
エラトステネスの篩(_,[],[]) :- !.
エラトステネスの篩(N,[A|R1],R2) :-
0 is A mod N,
エラトステネスの篩(N,R1,R2),!.
エラトステネスの篩(N,[A|R1],[A|R2]) :-
エラトステネスの篩(N,R1,R2).
268:デフォルトの名無しさん
09/06/22 22:55:11
スレリンク(tech板:842番)
# [1] C言語
# [2]1〜5の数字の組み合わせをを2次元配列index[][]に格納し、表示しなさい。
269:デフォルトの名無しさん
09/06/22 22:59:07
>>268
% Prolog
t268(X) :- 組合せ([1,2,3,4,5],2,X).
組合せ(X,1,[A]) :-
member(A,X) .
組合せ([A|Y],N,[A|X]) :-
N > 1,
M is N - 1,
組合せ(Y,M,X) .
組合せ([_|Y],N,A) :-
N > 1,
組合せ(Y,N,A) .
270:デフォルトの名無しさん
09/06/22 23:01:19
>>268
% Prolog
t268(X) :- 組合せ([1,2,3,4,5],2,X).
組合せ(X,1,[A]) :- member(A,X) .
組合せ([A|Y],N,[A|X]) :- N > 1,M is N - 1,組合せ(Y,M,X) .
組合せ([_|Y],N,A) :- N > 1,組合せ(Y,N,A) .
271:デフォルトの名無しさん
09/06/22 23:05:33
スレリンク(tech板:837番)
# キーボードから入力した数値の段数を持つ逆ピラミッドを表示するプログラム。
#
# 例えば3と入力した時、
#
# *****
# ***
# *
#
# となるようなプログラムです。
# どうか早急にお願いします。
272:デフォルトの名無しさん
09/06/22 23:08:00
>>271
問題が面白くないっす
やる気起きないっす
273:デフォルトの名無しさん
09/06/22 23:17:35
% Prolog
:- op(250,xfx,対).
t271(N,1 対 M) :-
for(N,N2,1),
N3 is (N2 - 1) * (M - 1) + 1,
for(1,N4,N3),write(*),N3=N4,
N=N2.
274:デフォルトの名無しさん
09/06/23 04:33:24
スレリンク(tech板:851番)
# あいうえお
# /*かきくけこ*/
# さしす/*せそ
# なにぬ*/ねの
#
# というファイル(test.txt)から文字数、改行数、コメント文字数をカウントし、出力するプログラムです。
# お願いいたします。
275:デフォルトの名無しさん
09/06/23 05:03:46
>>274
% Prolog
t274(_文字数,_改行数,_コメント数) :-
get_chars('test.txt',Chars),
length(Chars,_文字数),
改行数を数える(Chars,_改行数),
コメント数を数える(Chars,_コメント).
改行数を数える(Chars,_改行数) :-
findall(_,append(_,['\n'|_],Chars),L),
length(L,_改行数).
コメント文字数を数える(Chars,_コメント文字数) :-
append(_,['/','*'|L2],Chars),
append(_コメント文字候補,['*','/'|_],L2),
not(append(_,['/','*'|_],_コメント文字候補)),
改行を取り除く(_コメント文字候補,_改行を取り除いたコメント文字候補),
length(_改行を取り除いたコメント文字候補,_コメント文字数).
改行を取り除く([],[]).
改行を取り除く(['\n'|R1],R2) :-
改行を取り除く(R1,R2),!.
改行を取り除く([A|R1],[A|R2]) :-
not(A='\n'),
改行を取り除く(R1,R2).
276:デフォルトの名無しさん
09/06/23 05:11:18
>>274 >>275
% Prolog (訂正) コメント数 ではなく コメント文字数 です。
t274(_文字数,_改行数,_コメント文字数) :-
get_chars('test.txt',Chars),
length(Chars,_文字数),
改行数を数える(Chars,_改行数),
コメント文字数を数える(Chars,_コメント文字数).
改行数を数える(Chars,_改行数) :-
findall(_,append(_,['\n'|_],Chars),L),
length(L,_改行数).
コメント文字数を数える(Chars,_コメント文字数) :-
append(_,['/','*'|L2],Chars),
append(_コメント文字候補,['*','/'|_],L2),
not(append(_,['/','*'|_],_コメント文字候補)),
改行を取り除く(_コメント文字候補,_改行を取り除いたコメント文字候補),
length(_改行を取り除いたコメント文字候補,_コメント文字数).
改行を取り除く([],[]).
改行を取り除く(['\n'|R1],R2) :-
改行を取り除く(R1,R2),!.
改行を取り除く([A|R1],[A|R2]) :-
not(A='\n'),
改行を取り除く(R1,R2).
277:デフォルトの名無しさん
09/06/23 05:19:10
スレリンク(tech板:861番)
# 以下のように出力されるプログラムを作成せよ
# 年齢を入力してください
# 16
# 生まれた年を入力してください
# 1986
# 好きな数字を入力してください
# 7
# あなたは1986年生まれの16才で、7が好きですね
278:デフォルトの名無しさん
09/06/23 05:30:30
>>277
% Prolog
t277 :-
質問文(L),
findall(U,(member(A,L),write(A),nl,get_line(U)),VL),
write_formatted('あなたは%t年生まれの%才で、%tが好きですね\n',VL).
質問文([年齢を入力してください,生まれた年を入力してください,好きな数字を入力してください]).
279:デフォルトの名無しさん
09/06/23 05:41:29
スレリンク(tech板:879番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
280:デフォルトの名無しさん
09/06/23 07:00:07
>>279
% Prolog
t279(M,N,StartX,StartY,_壁衝突回数,_ポケットX,_ポケットY) :-
t279(M,N,StartX,StartY,1,1,0,_壁衝突回数,_ポケットX,_ポケットY),!.
t279(M,N,X,Y,_,_,Count,Count,X,Y) :-
member([X,Y],[[M,0],[0,N],[N,0],[M,N]]),!.
t279(M,N,X1,Y1,VX,VY,Count1,Count,X,Y) :-
member(X1,[0,M]),
VX1 is (-1) * VX,
Count2 is Count1 + 1,
X2 is X1 + VX1,
Y2 is Y1 + VY,
t279(M,N,X2,Y2,VX1,VY,Count2,Count,X,Y).
t279(M,N,X1,0,VX,VY,Count1,Count,X,Y) :-
member(Y1,[0,N]),
VY1 is (-1) * VY,
Count2 is Count + 1,
X2 is X1 + VX,
Y2 is Y1 + VY1,
t279(M,N,X2,Y2,VX,VY1,Count2,Count,X,Y).
t279(M,N,X1,Y1,VX,VY,Count1,Count,X,Y) :-
X2 is X1 + VX,
Y2 is Y1 + VY,
t279(M,N,X2,Y2,VX,VY,Count1,Count2,X,Y).
281:デフォルトの名無しさん
09/06/23 07:26:37
スレリンク(tech板:849番)
# [1]授業単元:プログラミング演習課題3
# [2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
# ファイルに登録された成績コードを読み、構造体列にデータを編集し指定された項目で
# ソート処理を行って、画面に一覧(見出しと明細データ)を出力する。
# ソートの順序は降順とし、10行毎に見出しを入れる。
#
# 成績ファイル:
# コード(6桁),氏名(20桁),国語(3桁),算数(3桁),理科(3桁),社会(3桁)
#
# 構造体の定義:
# struct seito {
# char cd[7];
# char simei[21];
# int kokugo;
# int sansu;
# int rika;
# int syakai;
# };
#
# ソート項目は、コード、氏名、国語、算数、理科、社会が選択できるようにする。
282:デフォルトの名無しさん
09/06/23 15:12:50
>>281
% Prolog
URLリンク(nojiriko.asia)
283:デフォルトの名無しさん
09/06/23 15:20:30
スレリンク(tech板:890番)
# [1] 授業単元:数理物理
# [2] 問題文(含コード&リンク):URLリンク(www.mns.kyutech.ac.jp)
sub8.html
# の課題3のプログラムで解くところまで
# 課題(3)
#
# 次の力が働いているときの、運動方程式を解く。
#
# F = -x - v ^ 3 + 1 + cos(t)
#
# 初期条件:t=0の時、x(0)=1.0、速度v(0)=‐0.5
# として解き、0<t<10までをgnuplot(など)で、プロットせよ。
#
# ヒント:
# 6章の減衰振動のプログラム(C言語)
# URLリンク(www.mns.kyutech.ac.jp)
284:デフォルトの名無しさん
09/06/23 20:03:38
スレリンク(tech板:905番)
# [1]c++
# [2]2次元配列n[10][10]のすべての要素に1を代入してから、その内容を表示しなさい。
# また、対角要素だけを1を代入し、ほかはすべて0を代入してから、表示しなさい。
# ただし、対角要素は左上隅から右下隅への対角線上の要素とする。次の図は実行例であ
る。
# --- (2)配列nの内容 ---
#
# 100000000
# 010000000
# 001000000
# 000100000
# 000010000
# 000001000
# 000000100
# 000000010
# 000000001
285:デフォルトの名無しさん
09/06/23 20:27:54
>>284
% Prolog
t284_1 :-
findall(L,(for(1,M,10),findall(1,for(1,N,10),L)),LX),
member(U,LX),
concat_atom(U,A),
write_formatted('%t\n',[A]),
fail;
true.
t284_2 :-
findall(L,(for(1,M,10),findall(B,(for(1,N,10),
(N=M,B=1;not(N=M),B=0))),LX),
member(U,LX),
concat_atom(U,A),
write_formatted('%t\n',[A]),
fail;
true.
286:デフォルトの名無しさん
09/06/24 04:35:26
>>284
% Prolog for/3を使いたくない場合。表示は省略。
t284_2(X) :- length(L,10),findall(L,一つだけ1で他は全部零(L),X).
一つだけ壱で他は全部零(L) :- append(L1,[1|R],L),零ならび(L1),零ならび(R).
零ならび([]).
零ならび([0|R]) :- 零ならび(R).
287:デフォルトの名無しさん
09/06/24 04:52:46
>>284 一ヶ所間違えた。
% Prolog for/3を使いたくない場合。表示は省略。
t284_2(X) :- length(L,10),findall(L,ひとつだけ壱で他は全部零(L),X).
ひとつだけ壱で他は全部零(L) :- append(L1,[1|R],L),零ならび(L1),零ならび(R).
零ならび([]).
零ならび([0|R]) :- 零ならび(R).
288:デフォルトの名無しさん
09/06/24 08:30:30
>>287
forループがlengthの中に閉じ込められているんだね。
これぞ宣言型プログラミング!
289:デフォルトの名無しさん
09/06/24 12:04:36
>>257
% Prolog
URLリンク(nojiriko.asia)
290:デフォルトの名無しさん
09/06/24 19:14:07
スレリンク(tech板:953番)
# [1] 授業単元: ピラミッドアート
# [2] 問題文(含コード&リンク): URLリンク(kansai2channeler.hp.infoseek.co.jp)
課題「ピラミッドアート」
数値を一つ入力し、その個数分の'*'を1辺とする
@ダイヤ型、A八角形、B星型 などを描画する
実行画面例@ダイヤ型
数字(2〜9)を入力してください:3
*
***
*****
***
*
実行画面例A八角形
数字(2〜9)を入力してください:2
**
****
****
**
実行画面例B星型
数字(2〜9)を入力してください:7
* * *
* * *
***
*******
***
* * *
* * *
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4630日前に更新/314 KB
担当:undef