2016.10.24 Monday
ANDをORとNOTで作る
今日はNOT回路とOR回路が作れるようになったので、AND回路をORとNOTの組み合わせで考えてみた。
ド・モルガンの法則から!(a+b)=(!a)・(!b)なので!(!a+!b)=a・bとなり、ANDがORとNOTで作れた。
画像のレバーで入力の0/1を切り替えられて出力がドアにつながっている。両方のレバーが1でないとドアは開かない。
面白いよ、これ。
技術系サラリーマン、ジャジャガッチの駄文です。
姉妹サイト「ジャジャガッチの勉強ノート」もよろしくお願いします。
ブログ中の回路等そのまま真似して事故になっても責任は負いませんのであしからず。
2016.10.24 Monday
今日はNOT回路とOR回路が作れるようになったので、AND回路をORとNOTの組み合わせで考えてみた。
ド・モルガンの法則から!(a+b)=(!a)・(!b)なので!(!a+!b)=a・bとなり、ANDがORとNOTで作れた。
画像のレバーで入力の0/1を切り替えられて出力がドアにつながっている。両方のレバーが1でないとドアは開かない。
面白いよ、これ。
2016.10.23 Sunday
今日はAND回路を作ってみよう。
ブール代数の法則使って作ってみよう。
!(a+b) = (!a)・(!b)ということは!(!a+!b) = a・b
だ。ほれ、NOTとORでANDが作れた。
ほれ出来た。ドアは出力の位置がわかりやすいようにあるだけな。
2016.10.23 Sunday
レッドストーン回路を作ってみたいと思って勉強中。
まずはもっとも基本の回路。
レバーとレッドストーンの組み合わせ。
レバーを動かすと信号が流れる。
回路とは言っても電子回路というよりは論理回路がそのまま具現化した感じか。
輪になっている必要はない。
レバーとかスイッチみたいなものが入力の役割を果たすようだ。
こういうのもありらしい。こっちの方が基本的か。
トーチは信号1固定のようだ。
次はNOT回路。トーチをブロックに刺しとくとNOT回路として働くらしい。ちなみにトーチの先にワイヤつなげないとだめね。
次はOR回路。
0と1が合流するときは1が優先されるらしい。
2016.10.23 Sunday
マインクラフトで実験的にアインシュタインの地上絵を描くことが出来たわけだが、なかなか面白かった。
プログラミングが上達しない人が多い大きな理由は、作りたいものがないということだと思う。そういう意味ではマインクラフトを題材にして勉強するというのは効果的だと思う。
次にやりたいのは、より大きなプロジェクトを実行するため、複数のロボットの制御や、補給だ。
あとは論理回路な。論理回路は詳しくないので参考書で復習中。
2016.10.23 Sunday
またしょうもないことを。
ちょっと前に作ったアシンシュタインの数値データは実はこのために抽出した。
本当は画素値に応じてブロックを積もうと思ったんだけど、ブロックの数が半端なくなるのでやめた。
取り出した数値データを二値化(簡単に言うと白黒化)して、地面を掘ることにした。
あと、画像が大きいと大変なので64x64に縮小しました。
fp = fs.open("/pic/einstein.txt" , "r")
x0 = 0
y0 = 0
while true do
str = fp.readLine()
if str==nil then break end
x, y , val = string.match(str, "(.-) (.-) (.+)")
dx = x-x0
dy = y-y0
if dx>0 then turtle.turnRight()
elseif dx<0 then turtle.turnLeft() end
for i=1,math.abs(dx) do
while true do
r,e = turtle.forward()
if r==true then break end
end
end
if dx>0 then turtle.turnLeft()
elseif dx<0 then turtle.turnRight() end
for j=1,math.abs(dy) do
while true do
if dy>0 then r,e = turtle.forward()
else r,e = turtle.back
end
if r==true then break end
end
end
print(math.abs(dx))
if val~="0" then turtle.digDown() end
x0 = x
y0 = y
end
2016.10.15 Saturday
マインクラフト、というかLuaスクリプト。
空白区切りのテキストから数値を取り出すことに成功・・・!1列目だけ表示してみた。
こういう→ s1,s2,s3 = string.match(str, "(.-) (.-) (.-)") 感じでパターンにマッチしたところを取り出してくれる。何これ超便利。
楽しすぎて昨日(というか今日)は朝4時就寝。
今日もテンション上がりすぎてて寝れるのか・・・???
fp = fs.open("/tmp/test.txt","r")
while true do
str = fp.readLine()
if str==nil then break end
s1,s2,s3 = string.match(str, "(.-) (.-) (.-)")
print(s1)
end
2016.10.15 Saturday
マインクラフト。またしょうもないことを。
Linuxのcatコマンド(テキストの中身を表示する)みたいなのを作ってみた。
自作catコマンドでcatコマンドのソースを表示している様子。
コマンドライン引数の使い方がわかった。
2016.10.15 Saturday
またしょうもないことしようと思ってbmp画像をテキスト形式に変換するプログラムを作った。
みんな大好きアインシュタインの画像を探してきてテキストに変換してグラフソフトで3次元プロットしてみた。
2016.10.15 Saturday
マインクラフトプログラミング。
前方5マス高さ5マスについて掘削するプログラムを書いてみた。
for i=1,5 do
if turtle.detect()==true then
turtle.dig()
end
turtle.forward()
for j=1,5 do
if turtle.detectUp()==true then
turtle.digUp()
end
turtle.up()
end
for j=1,5 do
turtle.down()
end
end