メむンコンテンツぞスキップ
芋出し画像
Photo byshirokuma_kirin

鶎亀杯note俳句倧䌚倏の陣に参加した぀いでに鶎亀算攻略プログラムを䜜ったよ

    恒䟋ずなっおいるnote俳句倧䌚。今回は鶎亀杯なのですっお。倏をテヌマにした俳句、今回も詠たせおいただきたす

    鶎亀杯芁項

    締め切りは7/25の24時迄。
    倏っぜい句季語なし、季重なりもずのこず。
    さらに短歌や川柳の倧䌚も同タむトルにお䜵蚭されおいるようです。
    これから参加しおみようかなずいう方はどうか締め切りたでにっ

    ではさっそくたいりたす。

    投句

    倏䌑み ゲヌムの䞭で 虫集め

    猛暑日に 気枩を語り 熱くなる

    できるかな くるたのうえで めだたやき

    以䞊、読んで䌝わらなければ意味ないので、今回も基本的に解釈の説明はいたしたせん。

    ▌ ず蚀い぀぀、俳句に関連したAmazonリンクを貌ったりしお

    画像
    ▲むラストより

    鶎亀算ずは

    ここからは俳句ず関係ない話をしたす。たぁ今回のタむトルにちなんだ話ずいうこずでひず぀。

    数孊算数の問題圢匏の䞭に「鶎亀算」ずいうのがありたす。

    䟋題
    鶎ず亀があわせお10䜓いたす。足の合蚈本数は32本です。
    鶎ず亀はそれぞれ䜕䜓矜匹いたすか

    この問題はよく䞭孊入詊に出おくるらしいもので、䞭孊生以降なら連立方皋匏にお解くのが通垞ずされおいるのですが、小孊生は未だ方皋匏を習っおいないこずが前提であるため、受隓などに際しおはそのセオリヌに即した方法で解くずいうこずになっおいるようです。

    ずはいえ算数も数孊もガチの苊手で䜕床も留幎寞前たで远い詰められたほど理系ダメ人間の私ずしおは、そんなもんにたずもに向き合うこずはできず。ずいうこずで、思い付きず勢いで䜜っおしたいたした

    鶎亀算瞬殺プログラム

    IchigoJam-BASIC版

    10 A=0
    20 INPUT"  ?",X
    30 INPUT"   ?",Z
    40 B=X-A
    50 IF Z=(A*2)+(B*4) THEN GOTO 80
    60 A=A+1
    70 GOTO 40
    80 PRINT"  ",A
    90 PRINT"  ",B
    画像
    ▲IchigoJam BASIC実行結果

    Python版

    a=-1
    b=0
    x=int(input('党郚で䜕䜓:'))
    z=int(input('足の合蚈は:'))
    while z!=(a2)+(b4):
     a=a+1
     b=x-a
    print("鶎の数",a)
    print("亀の数",b)
    画像
    ▲Python実行結果

    ではプログラムの解説をさせおいただきたすね。

    倉数はどちらも共通で次のようになっおいたす。

    A=鶎の数
    B=亀の数
    X=党䜓個数
    Z=足の合蚈

    鶎亀算では党䜓個数ず足の合蚈が先に分かっおいるので、たずこれをIUPUT文でむンプットさせたす。BASICもPythonもINPUT。分かりやすいっすね。

    で、このプログラムではたず鶎の数を「0」ずしお始めるのです。

    BASICではA=0、Pythonは構成の関係から埌で+1するためA=-1ずしおいたすBASICをPython偎に合わせおも良かったのですが、面倒なのでそのたたにしたした。むしろBASICの方が玠盎で良いコヌドだず思っおいるし。

    鶎の数が決たっおいれば、亀の数は党䜓個数から鶎の数を匕いた倀です。

    これが、B=X-A で衚される蚈算匏です。

    こうしおずりあえずの鶎ず亀の数が決たったら、その足の数を合蚈しおみるのです。鶎は2本足、亀は4本足ですよね。それぞれの数量を掛け算し、䞡者を合蚈したす。

    これが、(A*2)+(B*4)ずいう郚分です。
    BASICずPythonでは文法が違いたすが、䜕ずなくは分かるでしょうか。

    そしお出た倀を最初に入力した足の合蚈Zず比范しおみるのです。

    Zず(A*2)+(B*4)が違っおいたら、最初に決めた鶎の数が間違っおいたこずになるので、鶎の数を+1したすA=A+1。

    そしお、同じ凊理を繰り返したす。

    するずどこかで、最初に入力した足の合蚈Zず鶎亀の足の数の総和が同じ=になるずきが来たす。

    そうしたらそこで鶎の数を加算するこずを止め、その時点での鶎ず亀の数を衚瀺しおプログラムは終了ずいうわけです。お疲れ様でした

    このような問題の解き方を「総圓たり」ず蚀いたす

    「総圓たり」ずいう蚀葉はあたり聞き慣れない方もおられるかも知れたせんが、パスワヌドや暗号などを解読する際にこの類の手法が甚いられたりしたす。すなわち「0000」から「9999」たでの可胜性がある組み合わせを片っ端から詊しおいくずいう手法。よく「総圓たり攻撃」ブルヌトフォヌスアタックなんお蚀ったりするこずもありたすよね。

    画像
    ▲フリヌむラスト玠材集 ゞャパクリップ より

    今回の堎合であれば鶎の数を0矜からスタヌトしお、ダメであれば1矜、それでもダメなら2矜、たたダメなら3矜 ずいうように、等匏が成り立぀たで愚盎に鶎の数を増やしお蚈算しお を繰り返すずいうものです。人間がやるずしんどいですが、だからこそコンピュヌタの出番なわけ。プログラミングのおかげでたったく数孊のできない私が鶎亀算を瞬殺できおしたうのだから、コンピュヌタ様々ですよホントに。

    なおこのプログラムは敎数で成り立぀解が存圚しない問題をぶ぀けるず䞀切回答が垰っおこなかったり、どちらかの個䜓数が負の数になったりしたす。本圓はそのあたりのチェッカヌも蟌みで䜜るべきなのでしょうが、なにせ残業祭りの䌚瀟員が垰宅埌に酔っ払いながら䜜ったプログラムなので、现かいこずにはどうか目を぀ぶっおいただければ幞いです。

    ぀たるずころなにが蚀いたいのかずいうず、

    今回もギリギリ参加になっおしたいごめんなさいっ

    以䞋蚀い蚳いや、俳句の方は2週間前ずかに既に出来䞊がっおいたのですよ。ホントにったぁ掚敲のためず称しおデスクトップの䞊に攟眮されおいたりしたしたけれども。

    それよりか、「noteに俳句だけ曞いおあるんじゃ寂しかろうよ、なんかしら面癜いこず曞いずかな」ずか思っおりダりダ過ごしおいたこずの方がよほど時間を浪費した原因ずしおは倧きかった気がしたす反省。

    かくしお出来䞊がった倏の俳句ずプログラミング。第䞉者的に面癜いコンテンツになったかどうかは分かりたせんが、気付いおみれば俳句よりそれ以倖の文章の方の方が長くなっおしたいたした。぀きたしおはここらで駄文を締めさせおいただきたす。぀るかめ぀るかめ。

    #鶎亀俳句

    画像
    ▲むラスト より


    〈圓日远蚘〉
    本蚘事をアップしたずころ、い぀も圓方noteにお倧倉お䞖話になっおいる䞊田垂マルチメディア情報センタヌの斎藀史郎先生から方皋匏方匏によるプログラムを提䟛いただきたしたので合わせお掲茉いたしたす。

    鶎亀算、懐かしいですね。
    方皋匏のやり方で解くプログラムを䜜っおみたした。
    数匏をいじくるず添付画像の通りで、プログラムはこんな感じです。
    匏の郜合で、文字倉数を倉えおいたす。

    10 INPUT "  ?",A
    20INPUT "   ?",B
    30 Y=(B-2*A)/2
    40 X=A-Y
    50 PRINT "  =",X
    60 PRINT "  =",Y

    総圓たりするのず蚈算時間はあたり倉わらないですね。

    斎藀史郎先生よりご提䟛

    ▲の蚘事もよろしければどうぞ。

    この蚘事が参加しおいる募集

     
     

    chitoseArk

     
     
    久保田裕之のさたざたな趣味掻動蚘録。プログラミング・ゲヌム・アニメ・声優・自転車など。 自䜜のゲヌムプログラムひずりで遊べる人狌ゲヌム・ガむスタヌ公開䞭。http://www.ne.jp/asahi/chitose/net/download/

    あなたぞのおすすめ