[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 02/02 05:23 / Filesize : 462 KB / Number-of Response : 749
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

いろんな言語で宿題スレ 第三編



1 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:57:19 ]
第二編も512Kbyte越えで終了しました。
前スレで未解決な課題は順次このスレにコピーします。

729 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 21:53:46 ]
# 公開された日本最大の競馬情報データベースjbisのサイトで
# ディープインパクトの五代血統表は
# www.jbis.or.jp/horse/0000742976/pedigree/ を検索することによって
# 得られます。このサイトを利用し、これを起点にして、
# 父系(父親の父親の父親・・・と遡る)20代前の大種牡馬Eclipseまで列記する
# プログラムを作りなさい。

730 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 05:27:25 ]
>>730 (>>729)
% Prolog jbis/2 の定義を書くと長くなるのでここでは省略して。

732 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 05:44:54 ]
>>730
実はこんなに単純ではない。
最終的に五代遡らない内に牝馬が現れてしまうことがある。
父系に目標馬が存在しなかった場合だ。このことは、
五代血統表は牡馬、牝馬の区別ができるための情報を
持つ必要があることを意味する。これがめんどうなら
jbis/2に於いて牝馬が現れたら、それ以降の情報を
切り捨ててしまう方法もある。これだと五代血統表と
名乗ることはできず「_五代父系ならび」とでもなるが。

733 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん [2010/02/18(木) 11:19:38 ]
父系でも血統不詳なんてあるの?


735 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 15:01:57 ]
>>734
データベースがある程度完備していればない。だから>>733は間違い。
Eclipseの時代まで遡ると種牡馬欄が空欄で母系だけ3-4代伸びている場合が
あるのだけれど、これは何だろう。

736 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:04:59 ]
pc11.2ch.net/test/read.cgi/db/1252492296/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 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:59:16 ]
>>736
% Prolog

'RelationTaskNoS'(TaskNo,[TaskNo|R]) :-
  'Relation'(TaskNo,RelationTaskNo),
  'RelationTaskNoS(RelationTaskNo,R).
'RelationTaskNoS'(TaskNo,[TaskNo]).



738 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 12:54:03 ]
>>729
% Prolog jbis/2 の定義は
nojiriko.asia/prolog/sonota_729.html を参照してください。

739 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 16:10:29 ]
pc12.2ch.net/test/read.cgi/tech/1263824755/713
# HPはどのページも3クリック以内でたどり着けるのが良いとされています。
# さて問題です。どのページからも、すべてのページへこの条件を満たすようにするには
# 各ページにリンクはいくつ必要でしょうか。
# link(n)をページnのリンク数としたとき min { link(n) } を決定するという問題です。
# ページ数は、1000から1万の任意の値が与えられる物とします。


740 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 = "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 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 08:23:18 ]
# 以下は「中世の秋」ホイジンガ/堀越孝一訳(中公文庫による)の冒頭ちかくの段落です。
# ここにあらわれる文章をプログラム言語で書き換えなさい。
#
#  夏と冬の対照は、わたしたちの経験からはとても考えられないほど強烈だったが、
# 光と闇、静けさと騒がしさとの対照もまた、そうだったのである。現在、都市に住む
# 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ
# 声がどんな感じのものかを知らない。

743 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:08:26 ]
pc12.2ch.net/test/read.cgi/tech/1255277760/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/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 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 06:21:56 ]
>>742
% Prolog 第二節目は
# 人びとは、真の暗闇、真の静寂を知らない。ただひとつまたたく灯、遠い一瞬の叫ぶ
# 声がどんな感じのものかを知らない。

知らない(人びと,_何かを) :-
  知らない(_何かを).

知らない(_暗闇) :-
  真の暗闇(_暗闇).
知らない(_静寂) :-
  真の静寂(_静寂).

知らない(人びと,_何かの,_感じ) :-
  感じ(_何かの,_感じ).

感じ(_またたく灯) :-
  またたく灯(_またたく灯),
  ただひとつ(_またたく灯).
感じ(_叫ぶ声) :-
  叫ぶ声(_叫ぶ声),
  遠い(_叫ぶ声),
一瞬の(_叫ぶ声).



748 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:17:19 ]
pc12.2ch.net/test/read.cgi/tech/1263824755/746
# [1] 授業単元:
# UNIX C Programming
# [2] 問題文(含コード&リンク):
# ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10541.txt
#
# 下記のコードはUnixコマンドのmoreの低水準バージョンである。
# このmoreにundoの機能を付加しターミナルで使えるようにしたい。
# 例:ファイルの中を'Enter'で1行進み、'UNDO'で1行戻る。
#   'Enter'で1行進み、' '(Space)で1ページ進んだ後、'UNDO'で1ページ元に戻る。
#
# 一案として、/dev/ttyからのinputをarrayの中に残しておき、それを元に作業を一つ戻すことが考えられる。
# 下記のコードはmoreの基本的な機能である、’Enter’で一行前進・’ ’(Space)で一ページ前進を既に盛り込んでいる。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<462KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef