いろんな言語で宿題 第五編at TECH
いろんな言語で宿題 第五編 - 暇つぶし2ch526:デフォルトの名無しさん
10/12/19 06:12:51
URLリンク(ja.wikipedia.org)
# 以下の指示に従い、エラストテネスのふるいを使い素数生成を行うプログラムを書きなさい。
#
# エラストテネスの篩を実行すると、整数生成と篩の2つのプロセスが生成される。
# 整数生成は指定最大値までの自然数のストリームを生成し、篩はそれをふるいにかけ
# 素数のストリームを素数ストリームに返す。
# 整数生成と篩とはそれぞれ並行して動き、整数生成で生成された自然数のストリームは
# 引数の変数を介して順次篩に渡される。
# プロセス間の同期は、ストリームの各要素が具体化されるまで待つ、という形で自然に表現される。
#
# 整数生成、篩の各プログラムはそれぞれ以下のようになる。
# 整数生成は、自然数のストリームを順次生成し指定最大値を超えたら終了する。
# 篩は、2,3,5,7,..などの各素数の倍数をストリームから取り除く"ふるい"を順に
# 生成しながら、求まった素数を順次ストリームの要素として返す。
# 各"ふるい"は変数を介して直列につながれていくため、自然数のストリームから素数のみの
# ストリームを求めることができる。
#
# 注意.. 漢字の"篩"とかなの"ふるい"を使い分けている。

527:デフォルトの名無しさん
11/01/14 11:24:45
スレリンク(tech板:358番)
# [1] 授業単元:プログラミングC++入門
# [2] 問題文:問1・以下のクラスを作り、オブジェクトを生成して、全てのメンバ関数を実行せよ。ただし、体力は整数形の変則とする。
# クラス名ねずみ メンバ変数 名前 種族 体力 メンバ関数 コンストラクタ 自己紹介 体力を上げる 体力を下げる 体力の値を返す
# 問2・問1で作ったクラスから、以下のような派生クラスを作り、そのオブジェクトを生成して、派生クラスが持つ全てのメンバ関数を実行せよ。
# ただし、職業はコンストラクタにより、ディズニーキャラクターとせよ。また、自己紹介は名前の他に職業も紹介させよ。
# それから、踊ったら体力が回復するようにせよ。体力の増減量は決めていい。
# 問3・上記の派生クラスおよび期底クラスにおいて、体力の上限を設け、その上限に達した場合、IF文を使ってそれ以上値が増加しないようにせよ。
# また同様に、体力が負の値にならないようにせよ。そして体力がゼロならば踊れないようにせよ。
# 問4・問3で改良したオブジェクトに対して、WHILE文やFOR文を使って、体力がゼロになって踊れなくなるまで繰り返し躍らせよ。
# 問5・今までの問で作ってきたクラスのオブジェクトを、配列を使って2つ生成せよ。そして、それぞれに異なる名前を与え、全てのメンバ関数を実行せよ。

528:デフォルトの名無しさん
11/01/24 12:07:59
>>526 F#
open System.Threading
type Msg = int * AsyncReplyChannel<bool>

let sift =
  MailboxProcessor.Start (fun inbox ->
    let rec loop (filters : MailboxProcessor<Msg> list) = async {
        let! n = inbox.Receive()
        if filters |> List.forall (fun f -> f.PostAndReply(fun r -> (n, r))) then
          printfn "素数発見 : %d" n
          let filter = MailboxProcessor<Msg>.Start (fun inbox ->
            let rec loop'() = async {
              let! (m, r) = inbox.Receive()
              m % n <> 0 |> r.Reply
              return! loop'() }
            loop'())
          return! loop (filter::filters)
        else
          return! loop filters }
    loop [])

let gen maximum =
  Async.Start(async {
    printfn "2 ~ %d の素数探索開始" maximum
    seq {2 .. maximum} |> Seq.iter (fun n ->
      sift.Post(n); Thread.Sleep(200))
    printfn "素数探索終了" })

gen 100
System.Console.ReadKey() |> ignore

529:デフォルトの名無しさん
11/01/27 23:15:22
URLリンク(www.itmedia.co.jp)
#
# [問題]
# 始点、終点の座標と、途中にある円の中心座標、半径が与えられる。
# 始点から終点に移動するとき、円周の線をまたがなければならない回数の最小回数を求めよ。
# ただし、円同士の円周・始点・終点は接触しないものとする。
#

530:デフォルトの名無しさん
11/01/28 11:25:25
>>525
echoサーバ(Port) :-
        socket(internet,stream,Socket),
        socket_bind(Socket,Port),
        socket_listen(Socket),
        socket_accept(Socket,Host:Port2,NewSocket),
        open(NewSocket,read,Instream),
        open(NewSocket,write,Outstream),
        get_char(Instream,Char),
        echo(Instream,Outstream,Char),
        close(Outstream),
        close(Instream),
        socket_shutdown(Socket),
        socket_shutdown(NewSocket).

echo(_,_,end_of_file) :- !.
echo(Instream,Outstream,Char) :-
        put_char(Outstream,Char),
        flush_output(Outstream),
        get_char(Instream,Char2),
        echo(Instream,Outstream,Char2).

531:デフォルトの名無しさん
11/01/31 17:19:57
>>529 F# リンク先の回答を移植しただけ
let leastBorders xs ys rs xy1 xy2 =
  let checkInside (x1, y1, r) (x2, y2) =
    pown (x1 - x2) 2 + pown (y1 - y2) 2 <= r * r
  Array.zip3 xs ys rs |> Array.sumBy (fun xyr ->
    if [xy1; xy2] |> List.map (checkInside xyr) |> List.reduce (<>) then 1 else 0)

532:デフォルトの名無しさん
11/02/24 22:38:54.50
>>525
#! /usr/bin/awk -f
#echo server
BEGIN {
echoC = "/inet/tcp/10000/0/0"
while((echoC |& getline) > 0) {
print "受理日時: "strftime("%Y年%m月%d日 %H:%M:%S") ": " $0
print "受理: " $0 |& echoC
close(echoC)
}
}


533:532
11/02/24 22:40:00.23
gawkでしか動かんのでシバンがまずかった。
以下のように訂正。
#! /usr/bin/gawk -f

534:デフォルトの名無しさん
11/03/26 23:42:54.23
テキストボックスに
A222BあああA555BえええAおおおB55A454B
と入っていたとします。
この文字列の
AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する

このようなロジックをつくっていただけないでしょうか?

535:デフォルトの名無しさん
11/03/27 01:27:45.06
正規表現が使えると超ラク
正規表現の例は置いておくからテキストボックスからテキスト拾ってきてうんぬんとかは自分でどうにかしろ

Ruby 1.9.2
# coding: windows-31J

s="A222BあああA555BえええAおおおB55A454B"
s.gsub!(/(A5+B)|(B5+A)/, "")
puts s


536:デフォルトの名無しさん
11/03/27 06:06:22.97
>>534
% Prolog

'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとB
を削除する'(_文字列,_置換文字列) :-
    atom_chars(_文字列,Chars),
    文字ならびの置換(Chars,Chars2),
    atom_chars(_置換文字列,Chars2).

文字ならびの置換([],[]) :- !.
文字ならびの置換(['A'|R1],L) :-
    最初に現れるBの間に5が存在する(R1,L0,R2),
    文字ならびの置換(R2,L2),
    append(L0,L2,L).
文字列ならびの置換([_文字|R1],[_文字|R2]) :-
    文字ならびの置換(R1,R2).

最初に現れるBの間に5が存在する(R1,L0,L2) :-
    append(L0,['B'|L2],R1),!,
    \+(append(_,['A'|_],L0)),
    append(_,['5'|_],L0),!.

537:デフォルトの名無しさん
11/03/27 06:08:55.06
% Prolog 行途中で改行されてしまったので書きなおし。

'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する'(_文字列,_置換文字列) :-
    atom_chars(_文字列,Chars),
    文字ならびの置換(Chars,Chars2),
    atom_chars(_置換文字列,Chars2).

文字ならびの置換([],[]) :- !.
文字ならびの置換(['A'|R1],L) :-
    最初に現れるBの間に5が存在する(R1,L0,R2),
    文字ならびの置換(R2,L2),
    append(L0,L2,L).
文字列ならびの置換([_文字|R1],[_文字|R2]) :-
    文字ならびの置換(R1,R2).

538:537
11/03/27 06:52:31.59
% ごめんなさい。適切でない部分があった。
% Prolog

'AとBとその間の文字を1セットにして、AとBの間の文字に5が入っていたときだけ、AとBを削除する'(_文字列,_置換文字列) :-
    atom_chars(_文字列,Chars),
    '間に5を含むAとBを削除する'(Chars,Chars2),
    atom_chars(_置換文字列,Chars2).

'間に5を含むAとBを削除する'([],[]) :- !.
'間に5を含むAとBを削除する'(['A'|R1],L) :-
    最初に現れるBの間に5が存在する(R1,L0,R2),
    '間に5を含むAとBを削除する'(R2,L2),
    append(L0,L2,L),!.
'間に5を含むAとBを削除する'([_文字|R1],[_文字|R2]) :-
    '間に5を含むAとBを削除する'(R1,R2).

最初に現れるBの間に5が存在する(R1,L0,L2) :-
    append(L0,['B'|L2],R1),!,
    \+(append(_,['A'|_],L0)),
    append(_,['5'|_],L0),!.

539:538
11/03/27 07:31:13.78
あと、
_置換文字列 を _削除された文字列
に直してください。

540:デフォルトの名無しさん
11/03/29 14:59:16.06
vb.netの勉強をしています。独学です。

[問題]
2値化した画像の輪郭追跡処理をする。

できたら、
(1)getpixel等を使った、時間はかかるが初心者でも理解しやすいもの
(2)処理がはやくなるように工夫したもの
の2種類作っていただけるとありがたいです。


541:デフォルトの名無しさん
11/04/08 17:49:29.73
javaプログラムの質問儲けつけていただけるでしょうか?

542:デフォルトの名無しさん
11/04/08 23:56:31.52
受け付けますがjavaで回答が付くとは限りません
あなたに適したスレはおそらくこちら

★★Java質問・相談スレッド144★★
スレリンク(tech板)

543:デフォルトの名無しさん
11/04/09 00:50:47.04
>>542

ありがとうございます。

そちらの方で質問しても回答を期待できますか?
無理してJavaプログラミングの講座を取ったのですが行くなり苦戦しています。

544:デフォルトの名無しさん
11/04/09 09:27:01.02
>>543
「JAVAの宿題片付けます」というようなスレが
あったのですが、今は新スレが作られていない
ようですね。新学期が始まるとまた作られると
思いますが。
このスレは例えばJAVAの宿題スレから問題を
貰ってきて、別の言語で解答を出し合い、
言語表現の違いを楽しむためのスレです。

545:デフォルトの名無しさん
11/04/09 13:53:25.28
横入りですが、できましたらJavaで以下をお願いします。

【課題】キーボードから入力された1~9までを九九にし、
答えを1行に3個ずつ表示する。半角数字以外が入力された場合、
任意のエラーメッセージを表示させること。
【形態】public class Kuku1{で始める
【期限】4月11日
【Ver 】jdk1.6.0_24
【注】変数、if,for,whileまで学習。

単なる九九の計算のプログラムはできるのですが、例えば、3と入力して
3の段の答えだけを表示するやり方、エラーを表示させるやり方、
3つずつというのが全くわかりません。

よろしくお願いします。

546:デフォルトの名無しさん
11/04/09 14:02:43.86
ここは質問スレではないよ?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch