10/02/09 08:38:03
>>654
% Prolog
'テキストファイルから内容を読み出し、各行の先頭に 01 02 03 というように番号を付加して画面に出力する' :-
get_lines('test02.txt',L),
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(1,L).
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(_,[]) :- !.
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N,[Line|R]) :-
write_formatted_atom('%2d',[N],A),
空白を0に置換する(A,A2),
write_formatted('%t %t\n',[A2,Line]),
N2 is N + 1,
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N2,R).
空白を0に置換する(A,A2) :-
atom_chars(A,L),
ならびの置換(' ','0',L,L2),
atom_chars(A2,L2).
656:デフォルトの名無しさん
10/02/09 09:04:16
>>653
% Prolog
ある述語の引数を表示する場合の一般解は :-
ある述語(_引数),
write_formatted('%t\n'm,[_引数]),
fail.
ある述語の引数を表示する場合の一般解は.
でしょう。>>641では同姓同名をきっちりと表示することをサボっています。
それでそのことをこの述語を利用するプログラマに注意するために変数の引数を
強制しています。こうして置けば、この述語をテストした時に
?- 学生番号または名前をもとに身長を調べる(藤原隆甫,_身長).
_身長 = 177
という解を示してインタプリタが停止します。これがPrologプログラマをして
同姓同名への配慮が必要かどうか判断させる契機となるということです。
657:デフォルトの名無しさん
10/02/09 09:07:39
>>656
変な"m"が混入してしまいました。
write_formatted('%t\n'm,[_引数]), -> write_formatted('%t\n',[_引数]),
です。
658:デフォルトの名無しさん
10/02/09 11:53:10
>>654
% Prolog 出題の元スレの覗いていたら、%02d というformat表記が出ていた。
% もしかしてと試みたら私のPrologでも同じ。これまでの私の人生は何だったんだwww
% ということで、
'テキストファイルから内容を読み出し、各行の先頭に 01 02 03 というように番号を付加して画面に出力する' :-
get_lines('test02.txt',L),
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(1,L).
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(_,[]) :- !.
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N,[Line|R]) :-
write_formatted('%02d %t\n',[N,Line]),
N2 is N + 1,
'各行の先頭に 01 02 03 というように番号を付加して画面に出力する'(N2,R).
659:デフォルトの名無しさん
10/02/09 12:19:44
>>644
% Prolog これも実はヘッドゼロサプライだったのだけれど、サボっていた。
% 直そうと見たら、スラッシュも落ちていた。修正。
'日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付下限,_日付上限) :-
日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付下限),
日付連鎖(_日付下限,_日付),
日付からデータを表示する。存在しない日はデータをNULLとして表示(_日付),
_日付=_日付上限.
'日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :-
_日付 = (_年/_月/_日),
table(_日付,Data),
write_formatted('%02d/%02d/%02d %t\n',[_年,_月,_日,Data]),!.
'日付からデータを表示する。存在しない日はデータをNULLとして表示'(_日付) :-
_日付 = ( _年/_月/_日),
\+(table(_日付,Data)),
write_formatted('%02d/%02d/%02d NULL\n',[_年,_月,_日]),!.
660:デフォルトの名無しさん
10/02/09 12:37:38
>>645 (>>644)
% Prolog 日付連鎖は
日付連鎖(_日付,_今日) :- var(_日付),前日・今日(_日付,_今日).
日付連鎖(_日付,_今日) :- var(_日付),前日・今日(_前日,_今日),日付連鎖(_日付,_前日).
日付連鎖(_今日,_日付) :- var(_日付),前日・今日(_今日,_日付).
日付連鎖(_今日,_日付) :- var(_日付),前日・今日(_今日,_翌日),日付連鎖(_翌日,_日付).
前日・今日(_前日の年/12/31,_年/1/1) :- 一つ違い(_前日の年,_年),!.
前日・今日(_年/2/29,_年/3/1) :- うるう年(_年),!.
前日・今日(_年/2/28,_年/3/1) :- not(うるう年(_年)),!.
前日・今日(_年/_前月/30,_年/_月/1) :- 一つ違い(_前月,_月),member(_前月,[4,6,9,11]),!.
前日・今日(_年/_前月/31,_年/_月/1) :- 一つ違い(_前月,_月),member(_前月,[1,3,5,7,8,10,12]),!.
前日・今日(_年/_月/_前日,_年/_月/_日) :- 一つ違い(_前日,_日),!.
一つ違い(M,N) :- integer(M),!,N is M + 1 .
一つ違い(M,N) :- integer(N),!,M is N - 1 .
うるう年(_年) :- 0 is _年 mod 400,!.
うるう年(_年) :- 0 is _年 mod 100,!,fail.
うるう年(_年) :- 0 is _年 mod 4,!.
うるう年(_年) :- not(0 is _年 mod 4),fail.
661:デフォルトの名無しさん
10/02/09 14:16:05
# t_date 1_dekidaka a_dekidaka
# 2010/01/28 1000 1500
# 2010/01/29 1026 0
# 2010/01/30 0 3400
# みたいな感じなんですけど。
662:デフォルトの名無しさん
10/02/09 14:18:07
>>661 上半分がちぎれてしまった。
スレリンク(db板:502番)
# すいませんが、SQLを教えてください MySQL 5.1.35です
# 日付テーブル dailytbl
# t_date 西暦日付
#
# 出来高aテーブル
# code 1,2,3~
# a_date 西暦日付
# dekidaka
#
# 出来高bテーブル
# code a,b,c~
# a_date 西暦日付
# dekidaka
#
# 日付テーブルのt_dateに沿って出来高を表示させたいです。
# 出来高aテーブルにしても、出来高bテーブルにしても出来高のない日が
# ありますが、出来高のない日はdekidakaを0として表示させたい
#
# イメージとしては
# 日付テーブル 出来高aテーブル 出来高bテーブル
# t_date 1_dekidaka a_dekidaka
# 2010/01/28 1000 1500
# 2010/01/29 1026 0
# 2010/01/30 0 3400
# 2010/01/31 0 5500
# みたいな感じなんですけど。
663:デフォルトの名無しさん
10/02/09 14:22:31
>>662
% Prolog
日付テーブルのt_dateに沿って出来高を表示する :-
write('日付テーブル 出来高aテーブル 出来高bテーブル\n'),
日付テーブル(_西暦日付),
出来高aテーブルの取得(_西暦日付,_出来高a),
出来高bテーブルの取得(_西暦日付,_出来高b),
write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]),
fail.
日付テーブルのt_dateに沿って出来高を表示する.
出来高aテーブルの取得(_西暦日付,_出来高a) :- 出来高aテーブル(_西暦日付,_出来高a),!.
出来高aテーブルの取得(_,0).
出来高bテーブルの取得(_西暦日付,_出来高b) :- 出来高bテーブル(_西暦日付,_出来高b),!.
出来高bテーブルの取得(_,0).
664:デフォルトの名無しさん
10/02/09 14:39:10
>>662
% Prolog 日付テーブルにそって常に全部表示するというのは現実味がない。
日付テーブルのt_dateに沿って出来高を表示する(_日付下限,_日付上限) :-
write('日付テーブル 出来高aテーブル 出来高bテーブル\n'),
日付テーブル(_西暦日付),
_西暦日付>=_日付下限,
_西暦日付=<_日付上限,
出来高aテーブルの取得(_西暦日付,_出来高a),
出来高bテーブルの取得(_西暦日付,_出来高b),
write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]),
fail.
日付テーブルのt_dateに沿って出来高を表示する(_,_).
665:デフォルトの名無しさん
10/02/09 14:49:05
>>663 (>>662)
% Prolog もう一つの表記法を示す。この表記法もread/1と同様このスレでは
% 私は故意に使用しなかった。
日付テーブルのt_dateに沿って出来高を表示する :-
write('日付テーブル 出来高aテーブル 出来高bテーブル\n'),
(
日付テーブル(_西暦日付),
( 出来高aテーブル(_西暦日付,_出来高a);\+(出来高aテーブル(_西暦日付,_)),_出来高a=0),
( 出来高bテーブル(_西暦日付,_出来高b);\+(出来高bテーブル(_西暦日付,_)),_出来高b=0),
write_formatted('%t %10d %10d\n',[_西暦日付,_出来高a,_出来高b]),
fail;
true
).
666:デフォルトの名無しさん
10/02/09 17:09:19
スレリンク(tech板:850番)
# 【 課題 】‐出題内容‐
# Testプロジェクトのsrc直下にパッケージtest5を作成し、下記のテストプログラムを作成する。そして、TripTestをパスする実装を作成しなさい。
# <TripTestの説明>
# 日本旅行(JapanTrip)とアメリカ旅行(AmericaTrip)それぞれの旅費を算出する機能を実装する。抽象クラスTripを作成すること。
# 日本旅行もアメリカ旅行も食費(1万円)と宿泊費(3万円)は全く同じ金額で変わらないものとする。
# それぞれの食費、宿泊費、交通費はそのまま金額が取得でき、旅費合計は食費と宿泊費と交通費を足したものである。
#
# package test5;
#
# import static org.junit.Assert.*;
# import org.junit.Test;
# public class TripTest {
# @Test // 旅費を算出するテストプログラム
# public void testCost() throws Exception {
# Trip jpTrip = new JapanTrip();
# assertEquals(10000, jpTrip.getFoodCost()); // 食費
# assertEquals(30000, jpTrip.getRoomCost()); // 宿泊費
# assertEquals(50000, jpTrip.getTravelCost()); // 交通費
# assertEquals(90000, jpTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費)
# Trip americaTrip = new AmericaTrip();
# assertEquals(10000, americaTrip.getFoodCost()); // 食費
# assertEquals(30000, americaTrip.getRoomCost()); // 宿泊費
# assertEquals(300000, americaTrip.getTravelCost()); // 交通費
# assertEquals(340000, americaTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費)
# }
# }
667:デフォルトの名無しさん
10/02/09 17:34:26
>>666
% Prolog 旅費を算出するまでもない。
旅費(日本,食費,10000).
旅費(日本,宿泊費,30000).
旅費(日本,交通費,50000).
旅費(日本,合計,_旅費合計) :-
旅費(日本,食費,_食費),
旅費(日本,宿泊費,_宿泊費),
旅費(日本,交通費,_交通費),
_旅費合計 is _食費 + _宿泊費 + _交通費.
旅費(アメリカ,食費,10000).
旅費(アメリカ,宿泊費,30000).
旅費(アメリカ,交通費,300000).
旅費(アメリカ,合計,_旅費合計) :-
旅費(アメリカ,食費,_食費),
旅費(アメリカ,宿泊費,_宿泊費),
旅費(アメリカ,交通費,_交通費),
_旅費合計 is _食費 + _宿泊費 + _交通費.
668:デフォルトの名無しさん
10/02/09 18:30:28
# スレリンク(tech板:848番)
# 【 課題 】クラスの継承 URLリンク(rg550.hp.infoseek.co.jp)
# 課題11-2
# オブジェクト指向型の特徴である多態性(ポリモーフィズム)を利用して
# AnimalクラスのDogとCatからbarkメソッドを呼び出し、実行結果と同じメッセージが
# 表示されるプログラムを作成しなさい。
# 【 Animalクラス仕様 】
# barkメソッドが宣言されている。(処理内容:「動物が吠えている」と表示する。)
#
# 【 Dogクラス仕様 】
# Animalクラスを継承。
# Animalクラスのbarkメソッドをオーバーライト(処理内容:「犬がワンワン吠えている!!」と表示する。)
#
# 【 Catクラス仕様 】
# Animalクラスを継承。
# Animalクラスのbarkメソッドをオーバーライト(処理内容:「猫がニャーニャー鳴く!!」と表示する。)
#
# 【 Kad11_2クラス 】
# Animalクラスの参照変数animal1を宣言し、参照先はAnimalオブジェクトとする。
# Animalクラスの参照変数animal2を宣言し、参照先はDogオブジェクトとする。
# Animalクラスの参照変数animal3を宣言し、参照先はCatオブジェクトとする。
# animal1、animal2、animal3のオブジェクトに対してbarkメソッドを実行する。
669:デフォルトの名無しさん
10/02/09 18:35:24
>>668
% Prolog
動物(猫,吠える) :- write('ニャーニャーと鳴く!!'),!.
動物(犬,吠える) :- write('ワンワン吠えている!!'),!.
動物(_,吠える) :- write('動物が吠えている').
670:デフォルトの名無しさん
10/02/09 18:46:29
>>668
% Prolog 主語が抜けた。
動物(猫,吠える) :- write('猫がニャーニャーと鳴く!!'),!.
動物(犬,吠える) :- write('犬がワンワン吠えている!!'),!.
動物(_,吠える) :- write('動物が吠えている').
671:デフォルトの名無しさん
10/02/09 20:13:24
>>668
% Prolog (その一) 課題11-3
得点表を入力した上で平均点を付加して一覧表示する :-
write('入力人数は? >'),get_integer(_入力人数),
得点表入力(1,_入力人数,L),
得点表表示(L).
得点表入力(N,_入力人数,[]) :- N > _入力人数,!.
得点表入力(N,_入力人数,[[_名前,_得点ならび]|R]) :-
write_formatted('%t人目 受験科目数 :',[N]),get_integer(_受験科目数),
write('名前 :'),get_line(_名前),
科目別得点入力(_受験科目数,_得点ならび),
N2 is N + 1,
得点表入力(N2,_入力人数,R).
科目別得点入力(3,[_国語,_数学,_英語]) :-
write('国語 :'),get_integer(_国語),
write('数学 :'),get_integer(_数学),
write('英語 :'),get_integer(_英語),!.
科目別得点入力(5,[_国語,_数学,_英語,_社会,_理科]) :-
write('国語 :'),get_integer(_国語),
write('数学 :'),get_integer(_数学),
write('英語 :'),get_integer(_英語),
write('社会 :'),get_integer(_社会),
write('理科 :'),get_integer(_理科),!.
672:デフォルトの名無しさん
10/02/09 20:16:10
>>668
% Prolog (その二) 課題11-3
得点表表示(L) :- 得点表見出し表示,得点表明細表示(L).
得点表見出し表示 :- write(' 国語 数学 英語 社会 理科 | 平均点\n').
得点表明細表示([[_名前,[_国語,_数学,_英語]]|R]) :-
_平均点 is (_国語+_数学+_英語) // 3,
write_formatted('%t %t %t %t | %t\n',[_名前,_国語,_数学,_平均点]),
得点表明細表示(R),!.
得点表明細表示([[_名前,[_国語,_数学,_英語,_社会,_理科]]|R]) :-
_平均点 is (_国語+_数学+_英語+_社会+_理科) // 5,
write_formatted('%t %t %t %t %t %t | %t\n',[_名前,_国語,_数学,_英語,_社会,_理科,_平均点]),
得点表明細表示(R),!.
673:デフォルトの名無しさん
10/02/10 02:43:22
スレリンク(tech板:547番)
# [1] 情報処理応用
# [2] Fortranで,
#
#
# 階乗 n! を計算する関数を作成し,
#
# 順列
# n個の異なるものからr個取り出して並べる。
# このときの順列の総数をnPrとあらわす。
# nPr=n(n-1)(n-2)・・・(n-r+1)
# を計算する関数を作成し,
#
# 組み合わせ
# 異なるn個からr個取り出して組を作る。
# このときの組合せの総数をnCrとあらわす。
# nCr = nPr/r!
# を計算するプログラムを作成してください
674:デフォルトの名無しさん
10/02/10 02:45:56
スレリンク(tech板:549番)
# [1] 授業単元:プログラミング 1
# [2] 問題文(含コード&リンク):
# 球の体積をもとめよ。
675:デフォルトの名無しさん
10/02/10 03:03:34
スレリンク(tech板:554番)
# [1] 授業単元:プログラミング 1
# [2] 問題文(含コード&リンク):
# /*************************
# ある二つの文字列str1,str2 の編集距離はつぎの3つの操作を行うことによりstr1をstr2 に変換するのに要する操作の最低回数である
# ・ 1文字挿入する
# ・ 1文字削除する
# ・ 1文字を他の1文字に置き換える
# たとえば str1="sport" はstr2="sort" に, 文字 'p' を削除することによりstr2 に変換できるため編集距離は 1 である
#
# str_n を文字列str の頭からn 番目までの部分列としm(i,j)をstr i とstr j の編集距離を表すものとする.m(i,j)とm(i+1,j),m(i,j+1),m(i+1,j+1)の間に成り立つ再帰式を記述しなさい
#
# この再帰式に基づき効率良く編集距離を計算するプログラムを2次元配列を利用して作成しなさい.ただし,関数m(i,j)はint型の編集距離を返り値とする.
# ******************************/
676:デフォルトの名無しさん
10/02/10 03:06:10
スレリンク(tech板:548番)
# [1]C言語課題
# [2] コマンドラインに与えられた文字列が単数で自然数を表しているとして
# 以下の例のように出力されるプログラムを作れ
# 入力==>3
# 132
# 231
# 入力==>5
# 1304
# 2552
# 4031
# 入力==>10
# 136107
# 259084
# 480952
# 710631
# 入力==>20
# 13610150016
# 25914201711
# 48131918127
# 71218191384
# 11172014952
# 16001510631
677:デフォルトの名無しさん
10/02/10 03:19:32
スレリンク(tech板:551番)
# [1] 授業単元:プログラミング 1
# [2] 問題文(含コード&リンク):
# 二つの数列の和によってできる数列を表示したい。
678:デフォルトの名無しさん
10/02/10 03:52:22
スレリンク(tech板:568番)
# [1]数値計算演習
# [2] 極座標で表される曲線 r(t)=sin^2(πt) θ(t)=α sin(πt^2) (0<=t<=1)でαを指定した時
# の曲線の長さと囲む面積の近似値を求め、π/4<=α<=πまで変化させる時、
# 面積/曲線の長さが最大になるαを推定する
# 曲線上の代表点をとり隣接する点の間の距離の和で曲線の長さを近似。
# 面積は隣接する代表点と原点が作る三角形の面積の和で近似する。
679:デフォルトの名無しさん
10/02/10 03:57:07
>>677
% Prolog
二つの数列の和によってできる数列を表示する(L1,L2) :-
二つの数列の和によってできる数列(L1,L2,L),
write_formatted('%t+%t=%t\n',[L1,L2,L3]).
二つの数列の和によってできる数列([],L,L) :- !.
二つの数列の和によってできる数列(L,[],L) :- !.
二つの数列の和によってできる数列([A|R1],[B|R2],[C|R3]) :-
C is A + B,
二つの数列の和によってできる数列(R1,R2,R3).
680:デフォルトの名無しさん
10/02/10 04:16:37
>>674
% Prolog 積分で、の意味かな。とりあえず球の体積の公式で。
球の体積(_半径,_球の体積) :-
_球の体積 is ( 4 / 3 ) * pi * _半径 ^ 3.
681:デフォルトの名無しさん
10/02/10 06:16:37
>>673
階乗(M,N,1) :- M > N,!.
階乗(M,N,X) :-
M2 is M + 1,
階乗(M2,N,Y),
X is M * Y.
階乗(0,1) :- !.
階乗(1,1) :- !.
階乗(N,X) :-
N2 is N - 1,
階乗(N2,Y),
X is N * Y,
asserta((階乗(N,X) :- (!))).
nPr(N,R,X) :-
M is N - R + 1,
階乗(M,N,X).
nCr(N,R,X) :-
U is N - R + 1,
階乗(U,N,K1),
階乗(R,K2),
X is K1 // K2.
682:デフォルトの名無しさん
10/02/11 10:27:50
>>677
使用言語:J
A=:+:>:i.10
A
2 4 6 8 10 12 14 16 18 20
B=:2^i.10
B
1 2 4 8 16 32 64 128 256 512
A + B
3 6 10 16 26 44 78 144 274 532
683:デフォルトの名無しさん
10/02/11 10:54:30
>>679 (>>677) 訂正
% Prolog L3とするべきところがLになっていた。
二つの数列の和によってできる数列を表示する(L1,L2) :-
二つの数列の和によってできる数列(L1,L2,L3),
write_formatted('%t+%t=%t\n',[L1,L2,L3]).
二つの数列の和によってできる数列([],L,L) :- !.
二つの数列の和によってできる数列(L,[],L) :- !.
二つの数列の和によってできる数列([A|R1],[B|R2],[C|R3]) :-
C is A + B,
二つの数列の和によってできる数列(R1,R2,R3).
% C/C++の宿題スレで採りあげやすい出題がなかったので一日完全休養しました。
684:デフォルトの名無しさん
10/02/11 12:53:34
>>633
使用言語:J
f=: dyad def '-_1^+./y E. x'
'abaabab' f 'aab'
1
'abaabab' f 'abb'
_1
685:デフォルトの名無しさん
10/02/11 13:13:26
>>625
使用言語:J
f=: monad def '+/>:I.2|>:i.<:y'
f 10
25
686:デフォルトの名無しさん
10/02/11 16:22:41
スレリンク(tech板:602番)
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
# #include <stdio.h>
# int main(void){
# int a=0,k;
# for (k=0;k<100;k++){a++;
# if(a%5==0&&a%9==0)printf("A\n");
# else if(a%5==0)printf("B\n");
# else if(a%9==0)printf("C\n");
# else printf("%d\n",a);
# }return 0;}
# この処理のプログラムをスペース、改行を含み140字以内で書き直したい。
%
% 別の言語で同じ意味のプログラムを140字以内でということにしましょう。
687:デフォルトの名無しさん
10/02/11 17:18:38
>>686
使用言語:J
smoutput&>((0 i.~45 5 9|]){(;/'ABC'),<)"0>:i.100
688:デフォルトの名無しさん
10/02/11 19:06:48
>>686
% Prolog
main:-for(1,N,100),(q(N),u(N)->A='A';q(N)->A='B';u(N)->A='C';A=N),write(A),nl,N
=100.
q(N):-0 is N mod 5.
u(N):-0 is N mod 9.
689:デフォルトの名無しさん
10/02/11 21:50:42
>>686
使用言語:R
a=b=1:100;a[b%%5==0]="B";a[b%%9==0]="C";a[b%%45==0]="A";write(a,"")
690:デフォルトの名無しさん
10/02/11 22:12:19
>>686
使用言語:Lua
for i=1,100 do print(({i,"B","C","A"})[2-i*i*i*i%5+2*0^(i%9)])end
691:デフォルトの名無しさん
10/02/12 01:14:32
>>686
% Prolog
main:-for(1,N,100),(0=:=N mod 5,0=:=N mod 9->A='A';0=:=N mod 5->A='B';0=:=N mod 9->A='C';A=N),write(A),nl,N=100.
692:デフォルトの名無しさん
10/02/12 05:34:48
>>687
仮に45は反則ということにすると、どうなりますか?
693:デフォルトの名無しさん
10/02/12 07:05:25
>>692 >>686
使用言語:J
smoutput&>((0 i.~[:(,~+/)5 9|]){(;/'ABC'),<)"0>:i.100
694:デフォルトの名無しさん
10/02/12 10:26:37
>>693
ありがとうございます。
695:デフォルトの名無しさん
10/02/12 12:08:24
>>686
使用言語:maxima
f(a,b):=1-signum(mod(a,b));for i thru 100 do print([i,"B","C","A"][f(i,5)+f(i,9)*2+1]);
696:デフォルトの名無しさん
10/02/12 14:34:00
スレリンク(tech板:555番)
# [1]C言語とプログラミング
# [2] キーボードから3つの整数を受け取り大きさの小さい順に出力するプログラムを作りなさい。
# 但しmain関数内ではint変数一つだけが使えるものとします。またmain関数の再帰呼び出しも
# 出来ません。(main関数の引数、argc,argvをint変数として使用することも勿論禁止します)
# main関数のみで構成されるプログラムとして下さい。
# 入力される数は1から10までの範囲にあることを常にチェックし、それ以外の入力の場合は
# 再入力を促して下さい。
697:デフォルトの名無しさん
10/02/12 16:00:22
>>696
% Prolog
% 述語make/0 で 述語main/0 のソースプログラムを生成する。
URLリンク(nojiriko.asia)
698:デフォルトの名無しさん
10/02/12 16:38:21
>>697
再帰は禁止でしたね。うっかりしました。
再入力はrepeat/0を使えば書けますが、repeat自体が再帰そのものですから、
あまり意味がないですね。
Prologでは>>697のmainのような膨大な冗長述語の定義は稀ではないので、
ここでは題意から離れて、その述語の生成に焦点を当ててみました。
699:デフォルトの名無しさん
10/02/12 22:56:39
>>696
// F#
[<EntryPoint>]
let main _ =
"1~10の数字を3つ入力:"
|> Seq.unfold (printf "%s" >> System.Console.ReadLine >> System.Int32.TryParse
>> function
| true, x when 1 <= x && x <= 10 -> Some(Some(x), "次を入力:")
| _ -> Some(None, "1~10の数字を再入力:"))
|> Seq.choose id |> Seq.take 3 |> Seq.sort |> Seq.iter (printf "%d ")
0
700:デフォルトの名無しさん
10/02/13 02:10:11
>>696
使用言語:J
エラーチェックに苦労してなんとも悲惨なことになってしまった。データnをn番目の素数で表して
変数aに掛けていき、最後に因数分解(ここで勝手にソートしてくれた)して素数からnに変換。
f=: monad define
a=.1
label_b. smoutput '(1-10)?' select. ".(1!:1)1
case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5
case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10
case. do. goto_b.
end.
label_c. smoutput '(1-10)?' select. ".(1!:1)1
case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5
case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10
case. do. goto_c.
end.
label_d. smoutput '(1-10)?' select. ".(1!:1)1
case. 1 do. a=.a*p:1 case. 2 do. a=.a*p:2 case. 3 do. a=.a*p:3 case. 4 do. a=.a*p:4 case. 5 do. a=.a*p:5
case. 6 do. a=.a*p:6 case. 7 do. a=.a*p:7 case. 8 do. a=.a*p:8 case. 9 do. a=.a*p:9 case. 10 do. a=.a*p:10
case. do. goto_d.
end.
smoutput _1 p:q:a
)
701:デフォルトの名無しさん
10/02/13 06:48:19
スレリンク(tech板:868番)
# 【 課題 】GUIを使った簡易テキストエディターのプログラムです。
# ---------------------------------------------------------------------------
# テキストを入力してください: I am a student!
# フォント変換後のテキスト: I am a student!
# --------------------------------------------------------------------------
# 上のような形で、JTextField オブジェクト内に文字を入力した後、
# その下に“Helvetica”, Bold, 24のフォントで変換した文字を表示させたいのですが。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】JTextFieldとJLabelオブジェクトを使用します
# 【 期限 】2/14(水) 夜まで
# 【 補足 】Java初心者でよく分かりません。よろしくお願いします。
702:デフォルトの名無しさん
10/02/13 09:40:36
>>701
% Prolog SWI-PrologにはXPCEというグラフィックライブラリが
% 付いているのですが、私はうまく使うことができずにいます。
% それでこの課題はパス。
703:デフォルトの名無しさん
10/02/13 09:47:43
>>702
>>698なんかも、これはPrologではできません!とした方が親切なんじゃないの?
多少とも、Prologを知らしめたいという願いがあるのなら。
704:デフォルトの名無しさん
10/02/13 11:48:09
できるのにできないって言うのはただのネガキャンにしかなんねえだろ
705:デフォルトの名無しさん
10/02/13 15:05:27
大域変数を標準に取り込むかは現在ISOの作業グループで検討中。
元々の出題の意図は「ひとつの変数だけ使って」ということでしょうから、
代入できない論理変数ではできるはずもない。大域変数を使用できたとしても、
少なくとも一つ論理変数が必要でこれは題意に沿うかどうか。
それで、冗談のような方向へ逃げてみた。
もっとも元スレを読み直してみたら、私のと同じ発想の回答がずっと前に
書き込まれていた。
706:705
10/02/13 15:13:25
代入できない論理変数 --> 破壊代入できない論理変数
に訂正。
大域変数については、実は現在ほとんどの処理系がサポートしています。
しかし、私はこのスレで使うつもりはありません。
707:705
10/02/13 15:18:17
>>705 またまた訂正。元スレを読み直したら --> 出題元スレを読み直したら
708:デフォルトの名無しさん
10/02/13 17:24:16
>>701
// F#
open System.Windows.Forms
open System.Drawing
type TinyEditorForm() =
inherit Form(Text = "TinyEditor", Width = 450, Height = 150)
let labelInput = new Label(Text = "テキストを入力してください:", Left = 10, Top = 10, Width = 140)
let textboxInput = new TextBox(Left = 160, Top = 10, Width = 240)
let labelOutput = new Label(Text = "フォント変換後のテキスト:", Left = 10, Top = 50, Width = 140)
let textboxOutput = new TextBox(ReadOnly = true, Left = 160, Top = 50, Width = 240, Height = 50, Font = new Font("Helvetica", 24.f, FontStyle.Bold))
do
textboxInput.TextChanged |> Event.map (fun _ -> textboxInput.Text)
|> Event.add (fun text -> textboxOutput.Text <- text)
base.Controls.AddRange [|labelInput; textboxInput; labelOutput; textboxOutput|]
[<System.STAThread>]
do
new TinyEditorForm() |> Application.Run
709:デフォルトの名無しさん
10/02/14 05:33:41
スレリンク(tech板:104番)
# 以下の5行の文字列のいずれかをランダムに返すプログラムを書きなさい
# あいうえお
# かきくけこ
# さしすせそ
# たちつてと
# なにぬねの
710:デフォルトの名無しさん
10/02/14 07:31:37
>>709
使用言語:J
] a=:5 5$ucp'あいうえおかきくけこさしすせそたちつてとなにぬねの'
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
f=:monad def '(1?(#y)){y'
f a
あいうえお
f a
たちつてと
711:デフォルトの名無しさん
10/02/14 08:05:21
スレリンク(db板:521番)
# 販売集計処理について教えてください。
# 商品テーブル
# 商品名 販売本数
# ── ──
# お菓子
# お弁当
# 飲み物
#
# 販売履歴テーブル
# 商品名
# ──
# 飲み物
# お菓子
# お弁当
# お菓子
# お菓子
# 飲み物
# お弁当
# お弁当
#
# 商品テーブルの各商品が、販売履歴テーブルに何件ずつあるかを集計し、
# 商品テーブルの販売本数に記録させたいと思っております(日次処理)。
712:デフォルトの名無しさん
10/02/14 08:27:31
>>710
% Prolog
'5行の文字列のいずれかをランダムに返す'(_文字列) :-
findall(S,文字列(S),L),
N is random mod 5 + 1,
list_nth(N,L,_文字列).
文字列(あいうえお).
文字列(かきくけこ).
文字列(さしすせそ).
文字列(たちつてと).
文字列(なにぬねの).
713:デフォルトの名無しさん
10/02/14 08:43:03
>>710
% Prolog 非決定性にするには
'5行の文字列のいずれかをランダムに返す'(_文字列) :-
findall(S,文字列(S),L),
'5行の文字列のいずれかをランダムに返す'(L,_文字列).
'5行の文字列のいずれかをランダムに返す'(L,_文字列) :-
N is random mod 5 + 1,
list_nth(N,L,_文字列).
'5行の文字列のいずれかをランダムに返す'(L,_文字列) :-
'5行の文字列のいずれかをランダムに返す'(L,_文字列).
文字列(あいうえお).
文字列(かきくけこ).
文字列(さしすせそ).
文字列(たちつてと).
文字列(なにぬねの).
% ただし、
% ?- ..<Aゾーン>.. ,'5行の文字列のいずれかをランダムに返す'(_文字列), ..<Bゾーン>.. ,fail.
% のように使うと<Bゾーン>の記述によっては<Aゾーン>には決してバックトラックしないことに注意。
714:デフォルトの名無しさん
10/02/14 08:49:35
>>713
% Prolog
% <Aゾーン>にバックトラックさせるためには例えば、
'5行の文字列のいずれかをランダムに返す'(L,_文字列) :-
N is random mod 5 + 1,
list_nth(N,L,なにぬねの),!.
'5行の文字列のいずれかをランダムに返す'(L,_文字列) :-
N is random mod 5 + 1,
list_nth(N,L,_文字列).
'5行の文字列のいずれかをランダムに返す'(L,_文字列) :-
'5行の文字列のいずれかをランダムに返す'(L,_文字列).
% これで一度なにぬねのが利用された後はこの述語は非決定性の性質を一旦失う。
715:デフォルトの名無しさん
10/02/14 09:26:14
>>711
% Prolog
販売履歴(飲み物).
販売履歴(お菓子).
販売履歴(お弁当).
販売履歴(お菓子).
販売履歴(お菓子).
販売履歴(飲み物).
販売履歴(お弁当).
販売履歴(お弁当).
販売集計処理 :-
一意な商品名ならびを得る(L),
商品テーブルに追加(L).
一意な商品名ならびを得る(L) :- setof(_商品名,販売履歴(_商品名),L).
商品テーブルに追加([]) :- !.
商品テーブルに追加([_商品名|R]) :-
count(販売履歴(_商品名),_販売本数),
assertz(商品(_商品名,_販売本数)),
商品テーブルに追加(R).
716:デフォルトの名無しさん
10/02/14 21:09:11
>>711
// F#
let countCommodities cs hs =
let cnt = hs |> Seq.countBy id |> Map.ofSeq
List.map (fun c -> (c, defaultArg (Map.tryFind c cnt) 0)) cs
let commodities = ["お菓子"; "お弁当"; "飲み物"]
let salesHistory = ["飲み物"; "お菓子"; "お弁当"; "お菓子";
"お菓子"; "飲み物"; "お弁当"; "お弁当"]
countCommodities commodities salesHistory
717:デフォルトの名無しさん
10/02/14 22:21:13
>>701
使用言語:なでしこ
文字スタイルの指定方法はわかりませんでした。
母艦は「フォント変換表示」
「テキストを入力してください」と表示
入力欄とはエディタ
その幅は200
「フォント変換後のテキスト」と表示
出力欄とはラベル
そのテキストは「」
その幅は200
その文字書体は「Helvetica」
その文字サイズは24
入力欄を変更した時は~出力欄のテキストは入力欄のテキスト
718:デフォルトの名無しさん
10/02/15 12:06:38
スレリンク(tech板:654番)
# 【質問テンプレ】
# [1] 授業単元:データ構造とアルゴリズム
# [2] 問題文(含コード&リンク):
# 生徒数1000人分の学力テスト(五教科)の得点データが有る。ここで、任意の生徒Aと
# 得点の傾向が一番近い生徒の番号を高速で抽出できるようデータ構造を組みなさい。
# (合計点が近い、ではなく、各教科の得点の傾向が大事のようです。)
#
# 生徒のデータはstruct seito{int tensuu[5];};こんな感じです。
# 単に全部検索して得点差を計算したのを提出したらダメと言われました。
# こういう問題を解く定石のようなものがあるのでしょうか・・・
# 先輩方、よろしくお願いします。
719:デフォルトの名無しさん
10/02/15 21:26:13
>>718
イメージとしてはレーダーチャートの五角形のかたちを「傾向」として
その重心を「近さ」のものさしにしたいけど、さっとコードにする能力はない。
720:デフォルトの名無しさん
10/02/15 21:41:59
最近傍探索を高速にできるアルゴリズムかな?kd木?
721:デフォルトの名無しさん
10/02/15 21:47:22
それか、「各教科の得点の傾向」を「点数の比率」と受け取るなら
コサイン尺度を使って普通に最近傍探索でもいいかも
722:デフォルトの名無しさん
10/02/16 02:56:24
# 公認野球規則二・〇四には、
#
# 「ボール」 ストライクゾーンを通過しなかった投球、または地面に
# 触れた投球で、いずれも打者が打たなかったものである。
#
# とある。この定義をプログラムとして表現しなさい。
723:デフォルトの名無しさん
10/02/16 06:49:49
スレリンク(tech板:683番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク): URLリンク(ime.nu)
# ポーカープログラム
# # 1,二つのクラス(Card,Deck)が与えられていて、
# game1.hとgame1.cppのプラグラムを書け。
# このプログラムはデッキから5枚配る事を1回とし、
# その中に何回ペアまたはフラッシュ(同じ手札に同じマークが5枚揃う事)が
# あるかの10000回の統計であり、以下を表示させること
#
# 何回の統計か
# そのうち何個の手札がペアを持つか
# そのうち何個の手札がフラッシュを持つか
# ペアは全体の何%か
# フラッシュは全体の何%か
#
# 無作為化する為に以下を必ず含める事
# stand(unsigned)time(NULL);
#
# #2,新しいクラスhand(hand.hとhand.cpp)と、これを実行させる為の
# game2.hとgame2.cppを書け。
# これはカードの配布、ペア・フラッシュの確認、そしてデッキにカードを戻す為の
# プログラムである。
724:デフォルトの名無しさん
10/02/16 07:25:21
>>722
% Prolog
ボール(X) :-
投球(X),
\+(通過した(X,ストライクゾーン)),
\+(打った(打者,X)).
ボール(X) :-
投球(X),
触れた(X,地面),
\+(打った(打者,X)).
725:デフォルトの名無しさん
10/02/16 08:45:55
>>722
% Prolog
ボール(公認野球規則二・〇四,X) :-
'ストライクゾーンを通過しなかった投球、または地面に触れた投球で、いずれも打者が打たなかったものである。'(X).
726:デフォルトの名無しさん
10/02/16 08:47:35
>>722
% Prolog
% Prolog
公認野球規則(二・〇四,ボール,X) :-
'ストライクゾーンを通過しなかった投球、または地面に触れた投球で、いずれも打者が打たなかったものである。'(X).
727:デフォルトの名無しさん
10/02/16 16:31:33
>>723
% Prolog 一枚のカードを作る/2 や トランプのようにならびを切る/4 は
% URLリンク(nojiriko.asia) 参照
ペアまたはフラッシュの出現度数(_回数,_ペアの度数,_フラッシュの度数) :-
findsum([M1,M2],(for(1,N,_回数),トランプの準備([A,B,C,D,E|R]),役([A,B,C,D,E],M1,M2)),[_ペアの度数,_フラッシュの度数]).
役(L,1,0) :- sort(L,L1),ペア(L1),!.
役([A|R],0,1) :- sub_atom(A,1,1,_,_種類),フラッシュ(_種類,R),!.
ペア([A,B]) :- sub_atom(A,0,1,_,C),sub_atom(B,0,1,_,C),!.
ペア([A,B,C|R]) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),sub_atom(C,0,1,_,E),ペア(R),!.
ペア([A,B,C|R]) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),\+(sub_atom(C,0,1,_,E)),!.
ペア([A|R]) :- ペア(R).
フラッシュ(_,[]) :- !.
フラッシュ(A,[B|R]) :- sub_atom(B,1,1,_,A),フラッシュ(A,R).
トランプの準備(X) :-
findall(U,(for(1,N,52),一枚のカードを作る(N,U)),_整列したカード),
トランプを切るようにならびを切る(41,53,_整列したカード,X),!.
728:デフォルトの名無しさん
10/02/16 16:48:06
>>727 (>>723)
% Prolog ペア度数の数え方ですが、ワンペアを1 ツーペアを2 と勘定するなら
% ここでは採用していないがスリーカーズを3 フォーカーズを4と数えるなどもあるかもしれない。
役(L,N,0) :- sort(L,L1),ペア(L1,0,N),\+(N=0),!.
役([A|R],0,1) :- sub_atom(A,1,1,_,_種類),フラッシュ(_種類,R),!.
ペア([],N,N) :- !.
ペア([A,B],N1,N) :- sub_atom(A,0,1,_,C),sub_atom(B,0,1,_,C),N is N1 + 1,!.
ペア([A,B,C|R],N1,N) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),sub_atom(C,0,1,_,E),ペア(R,N1,N),!.
ペア([A,B,C|R],N1,N) :- sub_atom(A,0,1,_,E),sub_atom(B,0,1,_,E),\+(sub_atom(C,0,1,_,E)),N2 is N1 + 1,ペア([C|R],N2,N),!.
ペア([A|R],N1,N) :- ペア(R,N1,N).
729:デフォルトの名無しさん
10/02/17 21:53:46
# 公開された日本最大の競馬情報データベースjbisのサイトで
# ディープインパクトの五代血統表は
# URLリンク(www.jbis.or.jp) を検索することによって
# 得られます。このサイトを利用し、これを起点にして、
# 父系(父親の父親の父親・・・と遡る)20代前の大種牡馬Eclipseまで列記する
# プログラムを作りなさい。
730:デフォルトの名無しさん
10/02/18 05:14:30
>>729
% Prolog jbis/2 の定義を長くなるのでここでは省略して。
父系の収集(_目標馬,_五代血統書,X) :-
五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X),!.
父系の収集(_目標馬,[_一代父,_二代父,_三代父,_四代父,_五代父|_],[_一代父,_二代父,_三代父,_四代父,_五代父|R]) :-
jbis(_五代父,_五代遡った五代血統表),
父系の収集(_目標馬,_五代遡った五代血統表,R).
五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X) :-
append(L1,[_目標馬|_],_五代血統書),
length(L1,N),
N < 5,
append(L1,[_目標馬],X),!.
731:デフォルトの名無しさん
10/02/18 05:27:25
>>730 (>>729)
% Prolog jbis/2 の定義を書くと長くなるのでここでは省略して。
732:デフォルトの名無しさん
10/02/18 05:44:54
>>730
実はこんなに単純ではない。
最終的に五代遡らない内に牝馬が現れてしまうことがある。
父系に目標馬が存在しなかった場合だ。このことは、
五代血統表は牡馬、牝馬の区別ができるための情報を
持つ必要があることを意味する。これがめんどうなら
jbis/2に於いて牝馬が現れたら、それ以降の情報を
切り捨ててしまう方法もある。これだと五代血統表と
名乗ることはできず「_五代父系ならび」とでもなるが。
733:デフォルトの名無しさん
10/02/18 06:11:28
>>732 (>>729)
% Prolog 理屈の上では、三頭の始祖馬が出てきたら、とすればそれで良さそう
% ですが、実際には血統不詳で切れている血統表も存在するからこれでは済まない。
父系の収集(_目標馬,_五代血統表,X) :-
member(_始祖馬,['Byerley Turk','Darley Arabian','Godolphin Arabian']),
append(L1,[_始祖馬|_],_五代血統表),
length(L1,N),
N < 5,
\+(member(_目標馬,L1)),
!,fail.
父系の収集(_目標馬,_五代血統書,X) :-
五代血統書に於いて父系は最初の5要素以内に現れる(_目標馬,_五代血統表,X),!.
父系の収集(_目標馬,[_一代父,_二代父,_三代父,_四代父,_五代父|_],[_一代父,_二代父,_三代父,_四代父,_五代父|R]) :-
jbis(_五代父,_五代遡った五代血統表),
父系の収集(_目標馬,_五代遡った五代血統表,R).
734:デフォルトの名無しさん
10/02/18 11:19:38
父系でも血統不詳なんてあるの?
735:デフォルトの名無しさん
10/02/18 15:01:57
>>734
データベースがある程度完備していればない。だから>>733は間違い。
Eclipseの時代まで遡ると種牡馬欄が空欄で母系だけ3-4代伸びている場合が
あるのだけれど、これは何だろう。
736:デフォルトの名無しさん
10/02/19 01:04:59
スレリンク(db板:545番)
# ・データ
# ■Relationテーブル
# TaskNo RelationTaskNo
# 1 2
# 2 3
# 2 4
# 4 5
# : :
#
# 上記はタスクと、そのタスクに関連するタスクのNoを保持しているテーブルです。
# このようなテーブルから、指定したTaskNoに関連するタスクを取得して、
# その関連タスクにまた関連するタスクを…といった形でデータを取得したいのです。
# 以前SQLServerで似たような結果を取得した際は
# WITH RELATIONS (TaskNo,RelationTaskNo)
# AS
# (SELECT TaskNo,RelationTaskNo FROM Relation WHERE TaskNo = 取得したい番号
# UNION ALL
# SELECT R.TaskNo,R.RelationTaskNo
# FROM Relation AS R INNER JOIN RELATIONS AS CTE ON R.RelationTaskNo = CTE.TaskNo)
# SELECT * FROM RELATIONS
# (当時の環境が手元にないため構文が微妙に間違っているかも…)
# どなたかご存じだったら知恵を貸してください。
737:デフォルトの名無しさん
10/02/19 09:59:16
>>736
% Prolog
'RelationTaskNoS'(TaskNo,[TaskNo|R]) :-
'Relation'(TaskNo,RelationTaskNo),
'RelationTaskNoS(RelationTaskNo,R).
'RelationTaskNoS'(TaskNo,[TaskNo]).
738:デフォルトの名無しさん
10/02/19 12:54:03
>>729
% Prolog jbis/2 の定義は
URLリンク(nojiriko.asia) を参照してください。
739:デフォルトの名無しさん
10/02/19 16:10:29
スレリンク(tech板:713番)
# HPはどのページも3クリック以内でたどり着けるのが良いとされています。
# さて問題です。どのページからも、すべてのページへこの条件を満たすようにするには
# 各ページにリンクはいくつ必要でしょうか。
# link(n)をページnのリンク数としたとき min { link(n) } を決定するという問題です。
# ページ数は、1000から1万の任意の値が与えられる物とします。
740:デフォルトの名無しさん
10/02/19 20:46:28
>>739
// F#
// click : 最大クリック数、page : 全ページ数
let minLink click page =
Seq.initInfinite id
|> Seq.find (fun x -> List.sumBy (pown x) [0 .. click] >= page)
741:デフォルトの名無しさん
10/02/19 23:11:30
>>729
// F#
open System.Text.RegularExpressions
let paternal last =
use client = new System.Net.WebClient()
let rec paternal' url =
seq {
let page = "URLリンク(www.jbis.or.jp)" + url + "pedigree/" |> client.DownloadString
let firstRow = Regex.Match(page, @"<tr>(.+?)</tr>", RegexOptions.Singleline).Groups.[1].Value
let horses = Regex.Matches(firstRow, @"<(?:td|th).*?><a href=""(.+?)"">(.+?)</a>")
|> Seq.cast<Match> |> Seq.map (fun m -> (m.Groups.[1].Value, m.Groups.[2].Value))
|> Seq.cache
yield! Seq.map snd horses
yield! Seq.nth (Seq.length horses - 1) horses |> fst |> paternal' }
let horses = paternal' "/horse/0000742976/" |> Seq.cache
Seq.take (Seq.findIndex ((=) last) horses + 1) horses
paternal "Eclipse" |> Seq.iter (printfn "%s")
742:デフォルトの名無しさん
10/02/20 08:23:18
# 以下は「中世の秋」ホイジンガ/堀越孝一訳(中公文庫による)の冒頭ちかくの段落です。
# ここにあらわれる文章をプログラム言語で書き換えなさい。
#
# 夏と冬の対照は、わたしたちの経験からはとても考えられないほど強烈だったが、
# 光と闇、静けさと騒がしさとの対照もまた、そうだったのである。現在、都市に住む
# 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ
# 声がどんな感じのものかを知らない。
743:デフォルトの名無しさん
10/02/20 15:08:26
スレリンク(tech板:82番)
# [1] 授業単元:
# [2] 問題文(含コード&リンク):
#
# 一次方程式y=a*x+bにおいて、A[x1,y1]とB[x2,y2]が与えられた時、
# 方程式の係数a,bを求めよ。
# x1 y1: 450 454.4
# x2 y2: 452 454.8
# y=0.2*x+364.4
744:デフォルトの名無しさん
10/02/20 16:33:23
>>743
使用言語:J
x1=:450
y1=:454.4
x2=:452
y2=:454.8
(y1,y2)%.2 2$x1,1,x2,1
0.2 364.4
745:デフォルトの名無しさん
10/02/20 18:35:05
>>743
% Prolog
'一次方程式y=ax+bの二点[x1,y1][x2,y2]から係数a,bを求める'(X1,Y1,X2,Y2,A,B) :-
A is (Y1 - Y2) / (X1 - X2),
B is Y1 - (A * X1).
746:デフォルトの名無しさん
10/02/20 21:27:49
>>709
使用言語:Clojure
user=> (def A ["あいうえお","かきくけこ","さしすせそ","たちつてと","なにむねの"])
#'user/A
user=> (defn f [x] (x (int(* (Math/random)(.length x)))))
#'user/f
user=> (f A)
"たちつてと"
user=> (f A)
"かきくけこ"
747:デフォルトの名無しさん
10/02/21 06:21:56
>>742
% Prolog 第二節目は
# 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ
# 声がどんな感じのものかを知らない。
知らない(人びと,_何かを) :-
知らない(_何かを).
知らない(_暗闇) :-
真の暗闇(_暗闇).
知らない(_静寂) :-
真の静寂(_静寂).
知らない(人びと,_何かの,_感じ) :-
感じ(_何かの,_感じ).
感じ(_またたく灯) :-
またたく灯(_またたく灯),
ただひとつ(_またたく灯).
感じ(_叫ぶ声) :-
叫ぶ声(_叫ぶ声),
遠い(_叫ぶ声),
一瞬の(_叫ぶ声).
748:デフォルトの名無しさん
10/02/21 20:17:19
スレリンク(tech板:746番)
# [1] 授業単元:
# UNIX C Programming
# [2] 問題文(含コード&リンク):
# URLリンク(ime.nu)
#
# 下記のコードはUnixコマンドのmoreの低水準バージョンである。
# このmoreにundoの機能を付加しターミナルで使えるようにしたい。
# 例:ファイルの中を'Enter'で1行進み、'UNDO'で1行戻る。
# 'Enter'で1行進み、' '(Space)で1ページ進んだ後、'UNDO'で1ページ元に戻る。
#
# 一案として、/dev/ttyからのinputをarrayの中に残しておき、それを元に作業を一つ戻すことが考えられる。
# 下記のコードはmoreの基本的な機能である、’Enter’で一行前進・’ ’(Space)で一ページ前進を既に盛り込んでいる。