2014年12月18日木曜日

「創作力-255かゴミめ」な自分が小説なんか書いてみる

創作力0以下な私が創作をするとどんな酷い作品ができるかの実験。



「君は星船にのったことはあるかい」
西暦2133年。
南の島をバックパッカー背中に高校生卒業後の一年日本一周旅行をしていた時のことだった。

旅の途中ふと降りた砂浜で、見知らぬ青年に話しかけられたのだ。
地図によると熱帯雨林の小さな森と小山が3つの島。
砂浜のあるあたりは昔は漁師の家が多かったが、コンクリ製の水深のある港に移ったのは大正と呼ばれた大昔の話だった。

今では人家も少なく、資源不足の中、ケイ素ファイバー製帆船や手漕ぎのボートで細々と魚を取って本土の港町に売りに行くことで生計を立てている。
階段状に連なる建物にサンゴを砕いて作った道。
そんなどこにでもある小さな島の町のはずれにある砂浜だった。

「星船ってあれ?夜空に浮かんでる宇宙人が乗ってきたっていう」

静止衛星軌道上に浮かんでいる、誰でも望遠鏡をのぞけば見れる船だった。
それは教科書にも載っていた話。
2080年、その船が軌道上にあらわれ。世界中の望遠鏡がその船に向けられた。
彼らはニューヨークに降り立つと、地球の言葉と文化を学んだ。
彼らは彼らの世界の辺境に地球を見つけた。
中央から遠く、星々を渡り住める星を探しつづけてきたという。

数年にわたる交渉ののち、国連の場で彼らへの地球での永住権と宇宙における鉱物採掘権を与え、それを対価に人類は星船を買い取った。
彼らは人間の体のコピーを作るとそこへ意識をうつし地球に帰化した。

2133年今では静止衛星軌道上にある星船は2隻。
オリジナルの星船と人類が星の海へ乗り出すための星船のコピー船である。
建造は年数がかかりあと10年はかかるという。

「君バックパッカーかい」
「うん、日本一周の旅、バスと電車を乗り継いでね」

「僕も旅人なんだ」
「僕の故郷はαケンタリウス」
「そうすると君は宇宙人ってわけか、教科書で読んだけど本当に人間と変わらないんだね」

2014年11月13日木曜日

ニートの妄想仕事日記 その2

ネット上での教育関係コンテンツ制作請負会社に入れた。
面接では、xMoocやcMooc、NHKや放送大学などの優秀な講師を集められる人脈のすごさ。
ネット上の大学の教育コンテンツ提供の取り組みなどで話題が盛り上がり。
面接官に気に入られたようで入社できた。

出社一日目は机の受領やパソコンの設定、部署の説明、社員とのあいさつで午前が終わった。
午後は会社のミューティング。

社長が会社の方針を説明する日だったらしい。
要約すると。
「わが社のサービスは、ユーザがなりたい未来の自分、魅力的に思える自分になることをを手助けすることにあります」

「例えば音楽コンテンツなら、楽器の演奏を動画や説明図や、カラオケの得点技術を応用してテンポ通り引けたかなどを評価してユーザが楽器を弾けるように教育する。でもユーザは楽器が弾ける自分になるだけでは終わりません。
わが社のサービスでは、ここに追加して。
演奏をニコ動やYoutubeにアップできる方法を具体的に体験できるカリキュラムや、その後アクセス数を伸ばすための方法、ネットでのマナー講座や自分の動画を紹介してもらう方法の教授も入れる。そしてその評価はちゃんと実践できたかでアドバイスするサービスも付加する」

つまりは成功した自分、という魅力的な存在に慣れることを売り物にするわけです。

「釣りのコンテンツなら、ユーザーの住んでいる地域の釣り場でどんな魚を釣っていけばいいか、初心者向けの釣りから上級者向けの釣りまでをきちんと段階に分けて、○○をどこそこで何匹釣ろうという課題と釣りの仕掛けの解説動画、その課題を達成するのに必要な平均的釣り具費用を提示する」
「ユーザーは課題達成できたら、釣果の写真をアップしてもらい、釣りコンテンツの掲示板で発表してもらう」
こうして一人前の釣り師というものにユーザーがなれるという魅力を売り物にするわけです。

「電気工作講座なら、電気工作のキットを郵送で送り、ネットの動画で工作のやり方や手順を見せたりサーバでプログラムを提供して一つ一つ課題となる工作物を作り腕を上げる。」

大事なことはカリキュラムが終わった時ユーザは自分にできることが増えている(電子工作)という体験です。

もちろん数学や、人文科学、理数系の実験などのお堅い分野もあります。
基本は、教育が終わった時何か新しいことができる自分になったということです。

数学なら、問題の解法を示すだけでなく出題意図も含めて解説します。

2014年11月11日火曜日

ニートの妄想仕事日記



3Dレースゲーム作成のチームの仕事にありつけた。
3Dで表現された地形や岩などのオブジェ。
これらのポリゴンの重要な箇所にフラクタル図形のパラメータを設定するのが今の私の仕事だ。
データ制作の役職。

私の仕事はこんな感じでユーザーに届く。
ユーザーの車から遠くにある地形や岩は、ポリゴンの板にテクスチャを張られたものがそのまま表示される。
車の近くにあるものは、フラクタル数式で設定されたデコボコがポリゴンに適用され一枚のポリゴンが数式に従った形でより細かく分割されて表示される。

数式によるでこぼこはごくわずかだ。

このゲームでは車のタイヤやボディと地形の物理演算は、車の乗っている地形ポリゴンとそのポリゴンに設定された数式から発生する。
その結果視覚によるゲーム画面の地形のでこぼこと数式により発生した地形のデコボコが一致する。

真っ平らなポリゴン平面の上を微積分で走る旧来のレースゲームでは
臨場感をもたらすために、地形のテクスチャででこぼこ感をごまかしている。
本当は真っ平らな三角形の上をタイヤが滑っているだけなのに。
もちろん完璧な平面の上を滑る快感は否定できない。
人間はスムーズなもの、線形なものに快感を感じる。


このゲームでは新しい模索として、本当に地形のでこぼこが発生するのを売りにする予定らしい。

社内のA氏は今回のゲームに反対している。
彼は地形という名のポリゴンの角度と接続、摩擦係数の設定だけで、素晴らしいコースを作り上げてきた名手だ。
コース一周を写像をとれば、コーナーの曲率、傾斜、摩擦を一列に並べた芸術品のようなものだ。
この3つをどう並べればどんなコース体験をユーザーに提供できるかを熟知している。
細かい地形設定は、滑らかな面の上を走るユーザーの快感を阻害する障害物になるだけだという。

A氏の言うことももっともだ。
これが本当にユーザーに受け入れられるかはわからないがこの技術にもある程度のメリットはある。

地形に設定されているのは数式のパラメータだけなのでゲーム容量は抑えられ。
また近くのポリゴンだけが細かく表示されるので、画面で使われる総ポリゴン量は安定する。
計算量はあるが、ハードディスクに限界があるモバイル製品向けに制作された技術だという。


私は休日には現実の山やダートコースになりそうな場所をめぐり現実の地形のでこぼこを調べる。
フリー参加の身としては休日も返上するくらいは仕方ない。

2014年9月19日金曜日

ニート脱出記録

ブレインファックで4桁までのフィボナッチ数列を求めるためには10進計算が必要
なので桁上りを行うための怪しいコードを書いてみる。

1000*0+100*12+10*9+11*1を1*1000+100*3+10*0+1*1に直す感じ。
1バイト一桁で4桁使用。

ノートの上で試行錯誤すること1時間半なんかこのコードを書いただけで疲れた。
使用済みメモリ領域のごみ処理がちゃんとできてるかは不明。
計算結果が0になる場合も表示できるように修正。
明日はフィボナッチ数の数列を行う処理を記述予定。


最初の
+
[-
から相対メモリ位置が決まる、その手前はテスト用の値設定。
計算に使用する範囲は
4桁をabcdとして
相対メモリは
0 ,,,1,,,2,,,3,,,4,,,5
-1,,a,,,b,,,c,,,d,-1
その後ろ7バイト計算用で確保。
計算終了時に0と5を-1、-1に戻している。
初めて使うときは0と5を-1にしてから使用すること。
相対メモリ位置4から処理に入り相対メモリ位置0で処理が終了する。
後日の保守はドキュメントなしでは不可能。
ここから先はとある理由で、10月6日になるまでは公開できない。


      -
      >
      >
      >
      +
      >
      +
      >-<
      +
      [-
      >>>>>>++++++++++<<<<<<
      [->>>>>>>>+<<-
      [<<<<<<<-
      >>>>>>>>>
      ++++++++++
      <]
      <[<]
      <<<<<<+
      >>>>>>>>>----------
      <<<<<<<<
      ]
      >>>>>>>>[-<<<<<<<<+>>>>>>>>]
      <<<<<<<<
      >>>>>[-]
      >++++++++++++++++++++[-]
      >[-]
      >[-]
      <<<<<<<<<+
      ]

      >[<]>[<]>[<]
      >+
      [-
      ++++++++++++
      ++++++++++++
      ++++++++++++
      ++++++++++++
      .
      ------------
      ------------
      ------------
      ------------
      >+
      ]
      -
      <<<<-

2014年9月18日木曜日

ニート脱出記録、メールのやり取りから私は何を学べばよいのか?

昨日は2時間半ジョギングで体を鍛えただけだ。
今日はブレインファックで1桁のフィボナッチ数列を求めるプログラムを自分なりに考えてみる。
2桁以上は10進計算で2桁以上の数を求めるプログラムを書かなくてはいけないように思えるのでさすがにめんどくさい。
cの%dのありがたさがわかる。




  1. ++++++>>>+<<<
  2. [-
  3. >>>
  4. ++++++++++++++++++++++++++++++++++++++++++++++++.
  5. ------------------------------------------------
  6. [-<<+>>]
  7. <
  8. [->+<]
  9. <
  10. [->+>+<<]
  11. >>
  12. <<<]



広井誠さんというプログラム講座をホームページで行ってる方に前回このブログに投稿したプログラムを送ってみたところ。
一回目は手数を求めるプログラムを。
そのあと具体的に手順を求めるプログラムでないと意味がないのでは?
と追記しなおしたプログラムを送ったところ。

2回目のメールの返事として。

広井誠さんから。
貧乏暇なしでプログラムを見てる暇などありません。
プログラムを送るのをやめてくださいと返事が来た。


一応言い訳メールを送ってみたところ、メールを送らないでくださいという返事が来た。
きっと私の何かが悪かったんだ。
この経験から何を学べばいいのだろうか?




私の送った返事全文。
例題にパズルが多く、パズル好きなのかと考え特に何も考えず送っただけで他意はなかったのです。
1年くらいして忘れたころに返信が来る程度の期待感でした。

2回送信でやめてほしい。
わかりました。

A 今後は貴方にメールを送ってはいけない。
B 今後は貴方にプログラムのメールは送ってはいけない。

Aだと思いますが私はどちらを選択すべきでしょうか?


蛇足ですが、人が嫌に感じる理由は、計測可能な回数や正確な記録の検証で行うものではない。
これが私には難しい、人生で今まで一度も理解できてない感覚です。
私の欠点です。

例えばしつこいなど私には謎の感覚です。
軽く一言言及することを日を置いて2回繰り返しただけで、2回言及しただけなのに何度も何度もしつこいといわれたりする。
言及回数2なのだから何度という言葉は適用できないはずなのに、謎です。
私の感覚では、相手が言った内容の量と質*回数からしつこいなどを評価すべきだという感覚しかもてない、つまり法廷で争うときの評価方法しかもてないのです。
これは私の欠点で直したいと思っております。

2というのがしつこいと感じる人間の閾値?
1でもしつこいという人もいますね。
人は回数1からやめてほしいの閾値が始まるのか?

プログラムは受けつけません、なら貴方の規範を私にしめしてもらってると解釈でき、私はそれを理解できます。
やめてもらえないかは、何度もしつこいという意味が言外に含まれているような解釈になりました。
回数2で受け付けないという表現でなく止めてという表現になる、私が学びたいのはこの差がどこから生まれ何に注意すればよいかです。
私の話で恐縮ですが私はこのことで人生全般で困っています。

とりあえずこの件について学びたいのです。
何かご示唆いただけないでしょうか?

もちろんこのメールに返事を返す義理は貴方にありません。
興味がないと思うならその峰お返事いただけたら今後はメールを送らないなど規範をまもります。

2014年9月17日水曜日

Neet脱出記録 

今日は遊んでいる。
フリップイットスターという6望星のパズルがある。
これの7望星版を解いてみた。上図の通りである。
ルールは線分の交点と頂点にコインを全部表にしておき一つの頂点だけコインを取り除く。
コインは線分上を移動しほかのコインを一つ以上飛び越す移動だけが許される。
ただし飛び越すとき曲がることは許されないしコインを重ねることも許されない。
コインは開いてる点への移動だけが許される。
飛び越した時、飛び越されたコインは裏返される。
この操作で全てのコインを裏にせよというパズルです。
私はこの手のパズルを手で解くのは苦手なのでProlog言語で解いてみました。
Prolog言語はリストしかないのでこの手の操作は苦手なのだがまあだましだまし解法。


30秒計算、最短手数は22手となった。
手数の表示、bが表でwが裏、番号は上の図と対応。
遊びなのでプログラムミスがあるかまでは検討してないが暇な人はコンピュータが出した手順を検討してほしい。


[[1,b],[2,0],[3,b],[4,b],[5,b],[6,b],[7,b],[8,b],[9,b],[10,b],[11,b],[12,b],[13,b],[14,b]]
[[1,b],[2,b],[3,b],[4,b],[5,b],[6,b],[7,b],[8,b],[9,b],[10,0],[11,w],[12,b],[13,b],[14,b]]
[[1,b],[2,b],[3,b],[4,b],[5,b],[6,b],[7,0],[8,w],[9,w],[10,b],[11,w],[12,b],[13,b],[14,b]]
[[1,b],[2,b],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,0],[10,b],[11,w],[12,b],[13,b],[14,b]]
[[1,0],[2,b],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,b],[14,b]]
[[1,b],[2,b],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,w],[10,b],[11,w],[12,b],[13,b],[14,0]]
[[1,b],[2,b],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,0],[12,b],[13,b],[14,w]]
[[1,b],[2,w],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,0],[13,b],[14,w]]
[[1,b],[2,w],[3,w],[4,b],[5,w],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,0],[14,w]]
[[1,b],[2,w],[3,0],[4,b],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,w],[14,w]]
[[1,0],[2,b],[3,b],[4,b],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,w],[14,w]]
[[1,b],[2,w],[3,w],[4,0],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,w],[14,w]]
[[1,b],[2,0],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,b],[10,b],[11,b],[12,b],[13,w],[14,w]]
[[1,b],[2,b],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,b],[10,0],[11,w],[12,b],[13,w],[14,w]]
[[1,b],[2,b],[3,b],[4,w],[5,b],[6,b],[7,0],[8,w],[9,w],[10,w],[11,w],[12,b],[13,w],[14,w]]
[[1,b],[2,b],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,0],[10,w],[11,w],[12,b],[13,w],[14,w]]
[[1,0],[2,b],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,b],[10,w],[11,b],[12,b],[13,w],[14,w]]
[[1,w],[2,b],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,w],[10,w],[11,w],[12,b],[13,w],[14,0]]
[[1,w],[2,b],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,b],[10,w],[11,0],[12,b],[13,w],[14,w]]
[[1,w],[2,w],[3,b],[4,w],[5,b],[6,b],[7,w],[8,b],[9,b],[10,w],[11,b],[12,0],[13,w],[14,w]]
[[1,w],[2,w],[3,w],[4,w],[5,w],[6,b],[7,w],[8,b],[9,b],[10,w],[11,b],[12,w],[13,0],[14,w]]
[[1,w],[2,w],[3,w],[4,w],[5,w],[6,w],[7,w],[8,w],[9,b],[10,w],[11,b],[12,w],[13,w],[14,0]]
[[1,0],[2,w],[3,w],[4,w],[5,w],[6,w],[7,w],[8,w],[9,w],[10,w],[11,w],[12,w],[13,w],[14,w]]


以下プログラム。

perm([1,2,3,4]).
perm([4,5,6,7]).
perm([7,8,9,10]).
perm([10,11,2,12]).
perm([12,3,5,13]).
perm([13,6,8,14]).
perm([14,9,11,1]).

perm2(Perm,Perm).
perm2(Perm,Perm2):-reverse(Perm,Perm2).

flip_area([0,1,2]).
flip_area([1,2,3]).
flip_area([0,1,2,3]).


flip(w,b).
flip(b,w).


change1(Board,[E],[[E,0]|Board1],Color):-
!,
select([E,Color],Board,Board1).
change1(Board,[E|Es],[[E,C1]|NextBoard],Color):-
select([E,C],Board,Board1),
flip(C,C1),
change1(Board1,Es,NextBoard,Color).


change(Board,Move,[[ETop,Color]|NextBoard]):-
flip_area(Area),
findall(E1,(member(E,Area),nth0(E,Move,E1)),Es),
[ETop|Es1]=Es,
select([ETop,0],Board,Board1),
change1(Board1,Es1,NextBoard,Color).


next_calc(Turn,Nows,[Next1,Turn,Board]):-
member(Board,Nows),
perm(Move),
perm2(Move,Move2),
change(Board,Move2,Next),
sort(Next,Next1).




isBig([],[]):-!,fail.
isBig([[_,A]|Rest],[[_,A]|Rest1]):-!,isBig(Rest,Rest1).
isBig([[_,A]|_],[[_,B]|_]):-sort([A,B],[A,B]),!.
isBig(_,_):-!,fail.

oks([],Nexts,Nexts):-!.
oks(_,[],[]):-!.
oks([A|Rest],[A|Rest1],Result):-!,oks(Rest,Rest1,Result).
oks([A|Rest],[B|Rest1],Result):-
isBig(A,B),
!,
oks(Rest,[B|Rest1],Result).
oks(Olds,[E|Next],[E|Result]):-
!,
oks(Olds,Next,Result).


count([],Sum,Sum):-!.
count([[_,b]|Rest],Sum,Result):-
Sum1 is Sum+1,
count(Rest,Sum1,Result).
count([_|Rest],Sum,Result):-
count(Rest,Sum,Result).




union_dell([E,Turn,B],[],[[E,Turn,B]]):-!.
union_dell([E,Turn,B],[[E,_,_]|Rest],Result):-
!,
union_dell([E,Turn,B],Rest,Result).
union_dell([E,Turn,B],[[E1,Turn1,B1]|Rest],[[E,Turn,B]|Result]):-
!,
union_dell([E1,Turn1,B1],Rest,Result).

getFront([],[]):-!.
getFront([[E,_,_]|Rest],[E|Result]):-getFront(Rest,Result).

chain(_,[],[]):-!.
chain(Chain,Now,[Now|Result]):-
member([Now,_,Back],Chain),
chain(Chain,Back,Result).

myprint([]):-!.
myprint([X|Xs]):-nl,write(X),myprint(Xs).


chain_dell(_,[],[]):-!.
chain_dell([[N,Turn,B]|Rest],[N|Rest1],[[N,Turn,B]|Result]):-
!,
chain_dell(Rest,Rest1,Result).
chain_dell([_|Rest],Nexts,Result):-
!,
chain_dell(Rest,Nexts,Result).

search(_,Nows,Turn,Chain):-
member(E,Nows),
count(E,0,C),
C=:=13,
!,
write(E),
write(Turn),
chain(Chain,E,Ans),
myprint(Ans).

search(Olds,Nows,Turn,Chain):-
!,
findall(E,next_calc(Turn,Nows,E),Datas),
getFront(Datas,Nexts),
sort(Nexts,Nexts1),
Turn1 is Turn+1,
length(Nexts1,Len),
write([Turn,Len]),nl,
append(Nows,Olds,Olds1),
sort(Olds1,Olds2),
oks(Olds2,Nexts1,Nexts2),
sort(Datas,Datas1),
chain_dell(Datas1,Nexts2,Datas2),
append(Chain,Datas2,Chain1),
sort(Chain1,[Top2|Chain2]),
union_dell(Top2,Chain2,Chain3),
search(Olds2,Nexts2,Turn1,Chain3).


main:-
A=[[1,0],[2,w],[3,w],[4,w],[5,w],[6,w],[7,w],[8,w],[9,w],[10,w],[11,w],[12,w],[13,w],[14,w]],
search([],[A],0,[[A,-1,[]]]).


2014年9月10日水曜日

neet状態から脱出するまでの記録

なるほど見事にはめられたわけだ私は。

創価学会員の藤村さんが私のことを監視する。
(見張る理由は、私がフランス政府のカルト教団対策に関する行政資料を日本語訳してネットで提供したから、その中には創価学会に不利な情報が含まれていた、創価学会の名誉を傷つけた私は悪者)


藤村さんは私への監視をほのめかす。
なので私は監視されているかもと騒ぎ立てる。

藤村さんは監視なんてやってませんよと知らん顔をする。


キチガイ(私のこと)が監視されていると妄想を抱いてる。
危ないやつだこれはぜひとも監視せねばと藤村さんは主張する。

こうして隣家の藤村さんは正義の味方になったと。

その結果私がネットに書き込みをすると、藤村さんが私を見張っているときに限り10秒以内に藤村さんがこれに反応してる会話が隣家から聞こえてくることがたまにある。
ネットのどこに投稿してもだ。





堀江伸一
兵庫県加古川市加古川町南備後79-16