パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

プログラム言語は簡単なところから

2019-10-30 | プログラムをマスター計画2020

プログラムがわからない時はとにかく1つずつ簡単なものを何度も何度もためしていくと

少しずつ少しずつ道が開けていきコツを掴んでいきます。

 

わからないほど簡単なものから確認です。

 

失敗はすればするだけ後から役に立ちます。

同じ間違いを何度してもいいです。

何度もするというのはその言語の方にも問題があるかも知れません。

 

 

 

世の中にはプログラミングをすることが難しい言語

(難解プログラミング言語)があるらしく偶然それに挑んでました。

 

CodingameのをCGFunge Prime 未知の言語でプログラムを書くという斬新な課題

Befungeがもとの言語としてあることは解いた後で知りました。

(Befungeのほうが命令が豊富で、そちらのほう簡単に解けるはず)

 

最初は文字を表示させるデフォルトのPRIMEと表示しているだけのプログラム、

まったく理解できませんでした。

 

これは無理!と放置していたのですが、

プログラム言語がわからないとはどういう状態なのか確認してみたくて挑戦してみました。

 

この言語は変数という概念がなくプッシュとポップと何番目かのポップしかありません。

計算はスタックされた最後の2つに対してポップが行われ、結果をプッシュします。

プッシュはひと桁の数しか直接入れることができません。

ふた桁の11をプッシュするなら25*1+と入れます。(56+の方が簡単)

 

この言語は文字ひとつでひとつの命令になっています。

プログラムは ^ v < > でそれぞれの方向に変更できます。

スタックされた値の参照は全てポップしてしまいます。

(Dは特別で最後にプッシュされた値を複製してプッシュします。)

 

 

 

これで最初にプッシュされていた数字(4桁以下)が素数かどうか判定するというプログラムを作りました。

 

Pythonに翻訳してみるとこんな感じです。

nとかiとか変数が使えないので実際はそこをポップとプッシュを使いまわして補ってます。

 

最初は1、4、6、8、9を素数ではないとして、それ以外は素数とするプログラムからはじめて

少しずつ拡張していき、全体的な作り直し4回を経て完成しています。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。