「演算」を含む日記 RSS

はてなキーワード: 演算とは

2014-07-07

id:netcraft社長をやってる会社って、どれぐらいのスキルレベルを求めているんだろ。

どちらにしろ社保なしの業務委託ならbool blackCompany = true;BLACK&BLACKに違いないんだけど。

脚注

ビット演算おかしいという指摘を受けたので修正コミットしました。

2014-06-24

http://anond.hatelabo.jp/20140624200122

Portalの解説

謎の実験施設のようなところから脱出するのが目的パズルアクションゲーム

主人公は青い球と黄い球の二種類の鉄砲を打つことができ、青い球を壁に向かって打つと、青い壁が

黄色い球を壁に向かって打つと、黄色い壁ができる。

そして、青い壁と黄色い壁は繋がり、空間を超えて行き来できるようになる。

例えば、部屋の向こうに行きたいんだけど、小さい穴しかなくて通れないみたいなときは、

その穴の向こうの壁を黄色で撃ち、手身近な壁を青色で打つと、部屋の向こうにワープできる、みたいな感じかな。

加速度とかも物理演算されてて、落下しながら、黄色青色を打ち分けて、じょじょに加速度をあげながらジャンプしていくステージが僕はお気に入り

なお、ストーリー英語だったので理解できなかったため、説明できない。

2014-06-08

http://anond.hatelabo.jp/20140608233907

待て待て、それデータ採取コストの方が

ビッグじゃ済まないラージでヒュージなレベルじゃないか?

つーか、それがビッグデータだとしてそんなん存在し得るの?

元記事のスシロークラスだったら出来るかもしれんけど

それはもうコンピュータ演算速度から考えると特にビッグでもないしなぁ…

それを聞くとビッグデータって採取コスト的に実現不可能なデータのことを指すのかと思っちゃうわ。

2014-06-04

http://anond.hatelabo.jp/20140604153810

スレ主なんだけど、情報が足らなかったかな、と反省

NULL ならではの演算が含まれる振る舞い((NULL = NULL)はNULL、(FALSE=FALSE)はTRUE など)の特性をもつ場合にこそ、bool? を使いたいですね。

わたしの「スリステート」という言葉の発想が、デジタルIC の端子 HIGH(1),LOW(0),HIGH-Z(電気的切り離し)から来ていたから、そこをしっかり説明しておくべきだった。「スリステート」の言葉を直訳すれば3状態だけど、いくら3つの状態をもつからとて、なんでもbool?にはしないっすよ。大抵は私も列挙型を使いますね。しかしながら、値的に宙ぶらりんで集合演算にも参加しないような(しか存在はしている)値をNULLと解釈できる人が使えば、bool?やint?はとても有用かと(DBEXCELの空セルとも直交性がある)。そのあたりの意味がピンとこないようなら、手をださないほうがいいです。

ちょっとC系言語ポインタの話みたくなってきた...

http://anond.hatelabo.jp/20140604133746

どうでもいいけことで申し訳ないんだが・・・

C#ならいいのかもしれんが、フットプリント的にどうなのよ。

現実問題 中身を実装するとこういうことだよねぇ。

class {
 bool nullable,
 bool value,

 bool operator == (NULL){
    if(nullable){
       return true;
     }
     return false;
  }
 bool operator == (bool){
    if(nullable){
       throw;
    }
    if(value){
       true;
     }
     return false;
  }

というオーバーヘッドフットプリントを許容してまでクラス化するようなものなんだろうか?

便利そうだけど すっげぇ 気になる。

C#からいいような気もするが、 bool演算つのために 関数コールして ifステート複数回判定するのはオーバーヘッドが大きすぎる気がする。

小さいアジャイルプログラム向き なのかね。

2014-05-10

魔法科高校の劣等生ちょっと読んでみた

何言ってるかまったくわからないところがある。

たとえば、

人の内部世界である演算領域内で組み立てられた魔法式を、無意識領域最上層にして意識領域の最下層たる「ルート」に転送意識無意識狭間存在する「ゲート」から外部情報世界投射することにより、魔法式が投射対象たる「事象に付随する情報体」――これを現代魔法学では、ギリシャ哲学の用語を流用して「エイドス」と呼んでいる――に干渉し、対象情報一時的に書き換わる。

(1巻、pp.104-105)

 文章研究としてこの本をかなり真面目に精読してたんだけど、それでもこの文章読んでなにがなんだかよくわからない。いまの中高生ってこういう文章読めるのか。冗談でもなんでもなくニクラス・ルーマンより難しいと思った。ここまでなにいってるかわからない読書体験(しか小説しかラノベ)なんてはじめてだ。にわか文学ファンはトマス・ピンチョンが好きだけど、そのピンチョンよりはるかに読みにくい。

 ほかにもいろいろあるけど、ちょっと驚いたのは、

達也の浮かべた苦笑いは、苦々しさのないただの苦笑に変わっていた。

(1巻、p.71)

 これ。苦々しさのないただの苦笑ってなんだろう。哲学的といえば哲学的だけど。撞着語法かな? 「苦笑」って辞書的には「にがにがしく思いながら、しかたなく笑うこと」(明鏡国語辞典)なんだよね。いや、べつに辞書が正しいって言ってるんじゃないよ。ことばの意味ってのは文脈に応じてアドホックにどんどん変わっていくものからね。でもそれにしてもこの語法は難しすぎるんじゃないか? ある種のアイロニーなんだろうか。難しい。

俺TUEEEE系の馬鹿っぽい爽快バトルファンタジーかと思って楽しみにしてたのに……。まあでも最後まで読むよ。

2014-04-23

http://anond.hatelabo.jp/20140423095810

はい先生勉強してきました

ところで論証はどこに書いてありましたでしょうか?

ここでいう論理とは、思考の形式及び法則である。これに加えて、思考のつながり、推理の仕方や論証のつながりを指す。よく言われる「論理的に話す、書く」という言葉は、つながりを明確にし、論証を過不足なく行うということである

論理学は、伝統的には哲学の一分野である数学演算の導入により、数理論理学記号論理学)という分野ができた。現在では、数理論理学数学論理学のどちらであるとも(時にどちらでないとも)される。現在論理学は、(それを論理学であるとするなら)数理論理学と、数理論理学をふまえた論理学、数理論理学でない論理学分化している。

弁証法なども、「論理」なのであるが、論理学における論理とは異なる。これらは、論理というよりむしろ理論 (Theory)である

なお、日本語の「論理学」という語は西周によるものとされている[1]。

2014-04-13

パソコンダサい人の特徴と、唯一の改善

というネタを考えたけど、面倒くさいのでやめた。

後は頼む。


~~~~~~~~~~~~~~~~~~~~~

(前略)

自作とは、もっと繊細な感覚を持つことです。

例えば一番ベーシックCPUでも、安いとこではセレロン、センプロン、5000円~1万前後ではペンティアムデュアルコアアスロンクアドコア、1万5000円~ではコアi3、コアi5、カヴェリ(A10)、3万円前後ではコアi7、ジーオン多種多様です。上にあげたものは全て演算処理するだけの、ただのCPUです。ですが、それぞれ3DMarkだったり、FFXIVベンチだったり、PCMarkだったりが少しずつ違ってきます

この中から、一番自分に似合うものを探すのが、自作をするということです。決して10スレッドCPUを買うことではないです。(Haswell世代セレロンでも2コア2スレッドなので最低でも2スレッド、あとハイパースレッディングで4スレッドのもある)。

(後略)

2014-04-09

オブジェクト指向 v.s. 関数型プログラミング

近年、関数型プログラミング重要はいろんなところで叫ばれています

Javaの最新バージョン関数型プログラミングに関する新機能が加わりました。

Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています

プログラミング教科書大手オライリーからJavascript関数型プログラミングを行うための解説書が発行されました。

関数型プログラミングへの注目度は高まってきています

おそらく、みなさんは既にオブジェクト指向が何か、を知っています

でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います

実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、

関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。

この記事を読む方の中で、「関数型プログラミングを取り入れるか・取り入れないか」で切実に悩んでいる人は、おそらくいないでしょう。

この記事はあまりかいところに立ち入りません。関数型プログラミングを使う側の立場に立って、利点や向き・不向き、それが導くスタイルを書きました。

みなさんは鳥のように飛んで、高い空から関数型プログラミングとは何か、何が良いのか、を見渡してください。

ふたつのアプローチ比較

オブジェクト指向アプローチは、名前をつけてプログラムを整理する

関数型プログラミングアプローチは、汎用部品でなんとかする

オブジェクト指向アプローチ

Googleが近年リリースした言語、Goには、”継承”を直接サポートする仕組みが無いことが話題になりました。

また、Mac OSXの基幹ライブラリCore Foundationは、ライブラリ自体C言語で書かれているにもかかわらず、その設計方針は明確にオブジェクト指向です。

継承クラスは、オブジェクト指向必須条件ではありません。

オブジェクト指向本質とは、何でしょうか。

その本質とは"名前をつけて対象を識別し、それを扱うこと"、にあります

最もプリミティブなオブジェクト指向対象は、ファイルハンドラです。あるファイルを開いて、読み込んで、あるいは書き込んで、ファイルを閉じる。

これらの処理をまとめたら、わかりやすいですよね?

対象に関する処理を、対象の周りにまとめる。これがオブジェクト指向の基礎的な理念です。

識別することとイコール比較できることは、とても良く似ています

イコールによる比較は、オブジェクト指向では鬼門であることが知られています

PointクラスインスタンスとColoredPointクラスイコール演算をどう決めればいいかに、正解はありません(詳しくは"effective java"をご参照ください)。

また名前をつけて識別する対象は、フワフワしていてはいけません。

たとえば、"軍人階級"をオブジェクトにしたとしましょう。"大佐"クラスのある兵士名前フィールドや、性別フィールドを持っているでしょう。

ところで彼が昇格したときに何が起こるでしょうか。

新たに"少将"クラスインスタンスが作られます。"大佐"クラスを破棄する前に、名前性別、その他沢山のデータを引き継がなくてはいけません。フィールドを増やしたい場合はその都度コード修正を加える必要があります(*)。

なるべくイコール比較を避けたい。対象不安定なものはいけない。では何に名前をつけて、識別するか。そこにオブジェクト指向技術者の熟練度が現れるのです。

関数型プログラミングアプローチ

一方、関数型プログラミングでは、特定の何かに名前をつけるより、極力、汎用部品でなんとかしようとしま

さな関数を、集めて撚り合わせて、新しい関数を作る。

関数自体リストなどのデータ構造に詰めることもよく行われます

実は、関数型プログラミングというのは本質を表していません。

その真の名は、"値指向プログラミング"です。

関数をはじめとして、リスト・ツリーのようなコンテナ手続きを抽象化したもの、回路を抽象化したもの

あらゆる対象を値として、合成し、ときに分解し、新しい値を作ります

変数という概念必要ありません。

変数適用する処理を作りあげることが、とても簡単だからです。

四則演算定義されたデータを詰めたデータ構造もまた、四則演算可能だったり。

値をイコール比較することも、なんのそのです。

誤解を恐れずに言うと、オブジェクト指向トップダウンなのに対し、関数型プログラミングボトムアップです。

関数型プログラミングの利点

読みやすい・理解やす

関数型プログラミングサポートする言語には、沢山の汎用部品定義されています

このような構造インターフェイスとして、様々なライブラリが組まれているので、

たとえばモナドを知っていれば、30分程度でパーサー(解析機)を理解することができて、

パーサーを理解できれば、JSONパーサー・ XMLパーサー・markdownパーサー・C++パーサー ... などを理解するのはとても容易です。

理解やすいこと。これが関数型プログラミングの大きな利点です。

追記:

また、汎用部品と型のお陰で、ライブラリドキュメントが圧倒的にひきやすい、というメリットも有ります

Haskellな人がPythonにトライした結果 - Togetterまとめ

書きやす

関数型プログラミングは「厳密な事前設計必要とするため、簡単なことをやるのにも時間が掛かる」。

よく誤解されていますが、これはウソです。

スクラッチプログラムするのは、非常に手軽です。

>> map (*2) [1,2,3]
[2,4,6]

邪魔な”儀式”や、"おまじない"のコードが徹底的に撤廃されているためです。

関数型プログラミングコードは、潔癖かつ濃密です。

たとえばC言語でint hoge(int x,int y)が定義されているときhoge(3)はなんの意味も持ちませんが(コンパイルコケますが)、関数型プログラミングでは意味があり、実際に有用です。

上の例では、「掛け算をする」(*)関数は、二引数関数ですが、それに引数を渡して作られた「2を掛ける」関数(*2)は、一引数関数になります

関数型プログラミングでは、「簡単なことは簡単にでき、複雑なことは複雑にできる。ただし、間違ったことは殆どできないか、全くできない」。

多くのバグは、コンパイルエラーとして検出されます

また、静的型付けの力によって、コード補完は非常に強力になっていますインテリセンスの比ではないです。

たとえば、関数中のある表記の型を任意に表示できます(GHC/TypedHoles - HaskellWiki)。

やがてやってくる未来には、プログラムテキストエディタで書くことは時代遅れになっているでしょう。

統合環境サポートで、バグミスの少ない、スムーズプログラミングができます

そしてその環境で動くプログラミング言語は、関数型プログラミングサポートした言語なのです。

いつ関数型プログラミング

以下の様な兆候を感じたら、あなたはそのプログラム関数型プログラミングで書くべきです。

一般に、オブジェクト同士の相互作用が複雑になるほど、オブジェクト指向では手に負えなくなっていきます

そういうときは、オブジェクトを直接扱わず、替わりにその"相互作用"を扱うことで、複雑さを軽減するアプローチ有効です。

それこそが関数型プログラミングアプローチです。

オブジェクト指向の利点

初心者にとっては読みやすい・理解やす

特にオブジェクト指向有効なのはプログラミング初心者がそのコードをいじるかもしれないときです。

関数型プログラミングは、強固さと柔軟さの代償として、高い学習コストを伴います

そのため、初学者にとってはハードルが高いのです。

扱う対象があまり複雑でない時は、書きやす

オブジェクト間の相互作用が複雑でなく、着目している(名前をつけている)概念が安定しているとき

そして、プログラムをいじる人たちの間で共通理解が図れているならば、オブジェクト指向が有利です。

関数型プログラミングの得意分野はなにか

数値計算

遅延評価という機能によって、レガシー言語で扱えなかった、巨大な数を扱うことができます

分数を扱うことができます虚数もです。

関数型プログラミングで書かれたプログラムは、正確さが要求される、金融関連の業界で使われています

テキスト処理

手続きとしてパーサーを記述できるので、テキスト処理プログラムはより理解やすく、メンテナンスやすものになります

関数型プログラミングを知らない人は、「正規表現おk」と言いますが、

彼の書いた複雑な正規表現は、半年後には(書いた本人でさえ)理解できなくなっていることでしょう。

並行処理

手続き一般を扱うことができるので、途中で割り込みのある手続きの表現も容易です。

関数型プログラミングサポートしていない言語ではコルーチン(ファイバー)などをつかってなんとかするしかありません。

さもなくば、非並行処理では普通に関数として記述できるところを、並行処理のために、Builder,Strategy,Command,Interpreterパターンを駆使して書き直すことになります

Javascript使いの方は、Deferredなどの構造を使うでしょう(http://qiita.com/KDKTN/items/4c6986049d204f0645d8)。

C++使いの方はBoostで頑張りましょう。破滅的に解りにくいコンパイルエラーメッセージと格闘してください。

レシピ

もう少し簡単な例をあげます

あなたは、あるレシピにしたがって、自動的料理を行うマシン制御プログラムを書いているとしましょう。

料理レシピは、"手続き"ですよね?たとえば、カレー

1. まず玉ねぎを炒める。

2. 飴色になったら、肉を加えて炒める。

3. 野菜を加える。

4. 水を加えて煮る。

5. スパイスを加える。

しかあなたはこの手続きを関数として表現できるでしょうか。

…できませんよね?何故ならば、各ステップの"間に"、マシンのロボアームの位置や動きを調整する処理が必要からです。

これをオブジェクト指向でやろうとすると、各ステップ副作用として、それらの処理を行うことになります

そうすると、マシンが二機に増えた時などの変更量は、絶望的なものになります

あるいは関数として表現するのを諦め、手順全体をDSL記述できるようにします。

このアプローチ関数型プログラミング的です。しか関数型プログラミングサポートした言語の助けなしでは、そのDSL記述するために沢山のユーティリティコードを書かなくてはならないでしょう。

オブジェクト指向アプローチでこの問題をエレガントに解こうとすると、クラス化の粒度を上げる事になります

野菜クラスフライパンクラス、ボイルクラスフライクラス、焼き加減クラス、アームクラス野菜の大きさクラス、切り方クラス、焼き方クラス、"焦げたよ"クラスetc...

こうすると早晩レシピプログラムコードから消え去ることになります。上記のたった5行は、依存性注入のオブジェクトグラフを構築するコードに取って代わることになります。そこには沢山の挙動制御オプションとして付記されているのです。

カレーなど、ある種のレシピ限定することで、見た目の理解やすさを得ることができますが、一方それは表現力を損なうことを意味します。

C言語などではマクロを使うこともできますが、それは結局、関数型プログラミングアプローチ意味するところと同じになります。すなわち、補助のために沢山のコードを書くことになるでしょう。

GUI

iOSのAppstoreアプリは、"無料"と書かれたボタンを押すと、それが"インストール"ボタンに変わり、それをもう一度押すと、ダウンロードの進捗を表すインジケータに変わり、それを押すとダウンロードキャンセルできます

このように、位置は同じなのに、ステートに依って見た目と機能が変わるボタンは複雑です。

これをオブジェクト指向で実現しようとすると、

1. 三つの異なるボタンを同じ位置に置くか

2. 同じボタンが三つの異なる機能を持つか

という下らない問題にぶつかります

一方関数型では、"機能"、"見た目"、"状態"、を独立に扱って、それらを合成してボタンを作るので、迷うことはありません。

「同じ位置にあるUIオブジェクトは、コード上で(インスタンスとして)独立して、他から干渉を受けない」

この条件が満たされているうちは、オブジェクト指向GUIを実現することに無理はありません。

しかし、携帯端末のような小さい画面で、多くの機能を達成するためには、UI要素はコンテキスト依存的に複雑になりがちです。

近年、PCのディスプレイの大きさは、頭打ちになってきました。

画素数は増えているのですが、MacにおけるRetinaのように、複数ピクセルひとつドットを表すようになってきています

これは、ひとつの画面に置かれるボタンなどのUI要素の数は、これから先の未来で増えることはない、ということを意味します。

したがって、未来GUIプログラミングは、注意深く機能ピックアップして制限するというデザイナー努力を脇におけば、

関数型プログラミングの力を頼るしか無いでしょう。

はじめよう、関数型プログラミング

まり

Haskell さいこうなのおおおおおおおおおおおおおおおおおお!! おしっこ漏れちゃうのおおおおおおおおおおおおおおおおおおおお(゜∀。)ワヒャヒャヒャヒャヒャヒャ

1. google:すごいHaskellたのしく学ぼう を注文する。

2. Download Haskell自分のPCに導入する。

3. コンソールghciと入力して、対話コンソールを立ち上げる。

4. 次の関数コンソールに打ち込んで、結果を見る。即値で書かれているところとかをいろいろ変更してみて、感動する。

take 4 $ map (*2) [1..]

5. ステップ1で買った教科書を読んで、学ぶ。


追記:

いかがでしたか

ちまたには、関数型プログラミングの利点は変数が無いことだ、とか、より安全から、とか、より速いから、などという妄言が満ち溢れています

オブジェクト指向関数型プログラミングは、水と油ではありません。プログラマ自分プログラムに最適なアプローチを選ぶことができます

一般にはあまり知られていないことですが、Haskellにもオブジェクト指向へのサポートがあるんです(Lensライブラリ、これを使用したサードパーティライブラリ最近増えてきています)。

この記事を読んだオブジェクト指向プログラマあなたが、少しでも関数型プログラミングに(そしてHaskell)興味を持ってくださって、ホームセンター大人用オシメのコーナーが大賑わいになれば幸いです。。

2014-03-31

http://anond.hatelabo.jp/20140330210657

ちなみになんだけど、

コンピューターチェスだって基本になってるのは人間必死こいて考えてきた定跡の蓄積だよ

から全部演算するなんて無理ゲーだよ

そもそも人間同士の対戦だって定跡暗記ゲーになってて序盤なんて知恵もへったくれもないよ

でもランダムチェスとか初期配置をいじると微妙に定跡が通じなくなって面白い

まりは工夫次第だよ

2014-03-18

将棋のはなし

ものすごくド素人感想すみません

電王戦ですが、「指し手が変わった」って怒られているのは、なんだか不思議な感じがしました。

「お前、昨日までそんなに強くなかったじゃねーか!」

と言われているようにも聞こえました。


しかし、人間とは比べ物にならない演算能力をもつ怪物相手に

体一つ、頭一つ、たった一人きりで分の悪い戦いに立ち向かう棋士

一般人があまり軽々しく物言うべきではないかもしれないですね・・・



うそんなにコンピュータが強くなってしまったのなら、人間同士のルールではなく、

人間コンピュータ用の新しいルールがあればいいのになぁと思いました。

(あるのかな?)


単数コンピュータ 対 複数棋士 なんかどうなんでしょうね?

途中交代は随時。

攻めの棋士が敵の牙城を崩し、

守りの棋士が防御を固め、

復活の棋士が手駒を集め、

混乱の棋士が相手を幻惑する。

ターン制ではなく、リアルタイムでもいいかもしれませんね。

それであれば途中交代ではなく、全員同時参加で。

そういえば棋士って、騎士と同じ読みなんですね。今知りました。


タイトル名はぜひ、魔王戦で。

2014-02-04

http://anond.hatelabo.jp/20140204140403

なんだこれ、どこかの馬鹿が考えてtwitterかなんかで流してるんかと思ったら企業

高卒馬鹿にするために作ったテストなのか。

この担当者馬鹿すぎるだろ。

そんなカッコ書きした所で演算の順序変わらないんだけど。

それ、単に、俺定義で(/)の部分を先に計算することにするからな、って言ってるだけじゃん。

括弧書きを付けるなら(1/3)に付けない限り何も意味が無いし、あの式でその順序にはならない。

2014-01-31

http://anond.hatelabo.jp/20140131102821

きみ数学あんま使ってないんでしょ。

可換性の話をするとき普通は交換子[a,b]=ab-baを導入するが、

それに対するある種の双対として反交換子{a,b}=ab+ba自然に入る。

別に反交換関係{a,b}=0が成り立つものを可換であるとして議論してもいいわけ

そういう発想からすると普通非可換の典型的な例として外積はでてこない。

今の話の本質は非可換性であってベクトルではない。

そもそも ベクター行列も 近いじゃねーか。 行列使わずにどうやってベクトル扱うんだよ。

ちょっと何を言いたいのか理解できない。

別にベクトル行列も単なる代数構造であって本質記法ではなくその上に定義された演算ルールだよ。

リー代数行列の形で書けるけどベクトル(ベクトル空間の元)だよ。

2013-12-08

電王戦から将棋ファン

電王戦以前

 電王戦以前にも、将棋に興味はあった。 子供の頃は親となんどか指したし、高校の頃も何十戦か友達将棋を指した。

 だが、定石を覚えるのが面倒だし、強い人相手だと同じ戦法で延々ボコされたりとつまらなかった。

 漫画では、ハチワンダイバー面白いなあと見ていたし、ハチワンダイバーを理解するために、『最強将棋 激指スペシャル2』という、基本的な定跡をだいたい網羅していて、将棋ソフトまでついてくる本を買って、一応戦法の種類はだいたい把握した。

 その程度の知識だった。

電王戦

 電王戦が始まる1年前に、『人間に勝つコンピュータ将棋の作り方』というのを読んでいた。 どうやら、10年後にはコンピュータープロ棋士は勝てなくなるぞ。的な内容だった。 正直、うさんくさかったw 内容も、どうやったらアルゴリズムがよくなるか?について書いてあったが、『そんなんで勝てるの?』というのが正直な感想だった。

 確かに、将棋24で勝ちまくるのは可能だろうけど、プロって本当かよという印象。

 だが、電王戦で、「はじめてプロ棋士が負けた!」 → 「おいおい、速効次もかよ!」 → 「え???塚田プロって昔すげえ強かったんじゃ、、、ひきわけ?」 → 「はぁ????A級がボコられた??? A級って一番強いんじゃなかった????」

 と、ものすごくびっくりした。

電脳戦時

 正直、その時は、A級の三浦ってだれ? 塚田ってどのくらいの人なの? 橋本より強いのって出てるの? 船江って人はどのくらい強いの? とまったく理解していなかった。

 理解していなかったが、ツイッターや2chでおもしろ半分で煽りまくっていたw

 『プロは雑魚w』 『あと数年でスマホにもかてねえゴミどもw』 『プロ削減しろ、終わったんだよ』 『どーでもいいから、三浦とかわけわかんねーやつより羽生とか渡辺だせよ、はあ?森内???だれだよそれ、しらねーよ、そんな聞いたことも無いゴミ

 みたいな。

 いやもちろん、ネタなんだけど。

 そういうレスであふれかえっていたので、なんとなく便乗した。 とにかく、「真剣にやってて、ガチ天才と言われてる奴らが惨めに負けていくのが凄く楽しい」というルサンチマンだった。 「所詮人間天才なんて、こういうアルゴリズムの数量押しの凄く低い段階なんだよw」という感じで溜飲を下げていたのだと思う。

電脳戦後

 その後、A級、B1,B2棋士をだいたい覚え。 それぞれの将棋の戦法もある程度覚え、狙いも覚えた。 将棋歴史や、戦法の趨勢も、まあまあ把握した。

 で、ハム将棋にはほぼどんな戦法でも完勝するくらいにはなった。

 将棋講座なり買って読むし、NHK杯も見るようになった。 棋譜を漁って見ることも覚えた。

 なんというか、普通に面白い。 人間コンピューターに負けたとか関係無く、すげえ面白い

人間コンピューターに勝てないとは?

 てか、コンピューター人間が勝てないってのは、当たり前というか。

 まあ、人間プロ同士でも、「詰みを逃した」とか、「終盤よく分からない」とか普通にあるけど、ソフト演算で全部読むから、そりゃミスらない。 下手したら、30手くらい読むわけで、将棋がせいぜい100手~200手で終了するゲームだということを考えると、そりゃ終盤は勝てない。

 じゃあ、中盤はどうだろう?

 中盤ってのは、プロの腕の見せ所だけど。 プロ同士でも、「ミスの少ない手」を選び続けるということが多い。 そう、ミスをしない手を選び続けるわけだ。 コンピューター場合ミスをしない」のは当たり前だし、「ミスを全部潰した上で、画期的な手も読むことができる」というアドバンテージがある。

 そうなんですね、プロ同士では、お互い人間から、「ミスをしない手を選び続ける」ことがそのまま優位性につながるけど。 vsコンピューターだと、相手はミスをしないのに、こちらはミスをしないことに気を遣うだけでなく、相手に良い手を指させない事まで考えないといけない。 vs人間にくらべて、読む量や精度が格段に求められてしまうんですね。 人間相手だとあり得ない精度をやってくるわけで。 中盤は、コンピュータが強いというよりは、「人間にとって不利すぎる相手」になってしまう。

 じゃあ、序盤は? そう、序盤こそ勝ちうると思います。 コンピューターは、所詮序盤は人間の人まね段階です。 ここで、「新構想」とかで勝ちうるってのはあると思います。 ですが、「新構想」ということは、「研究が整備されていない」ということです。 研究が整備されていないものミスなくさせるでしょうか? あやしいですね。 ですから、新構想でコンピューターに勝つというのは、厳しい。 さらに、新構想なんてあるなら、vs人間でのタイトル戦に温存するわけですよねw

 さらに、時間。 人間同士で4時間持ちなら、 お互い4時間めいいっぱい使って、8時間だけど。 コンピューターは4時間も使わないわけで。 結局人間にとって不利。

 結局、コンピューター人間がやるにするには、あまりにもコンピューターが有利すぎる。

 ってことで、ハード貸し出しとか、当たり前だと思いますよさすがにw 人間は見えないところでハンディあるわけですから

人間同士のおもしろさ。

 将棋って、何が面白いって。

 ①序盤の構想 → かなり新構想とかが出るわけです、何がでるかな? 相手の研究を外すためにどんな戦法を出してくるのか? 鍛えてきたのか? なんというか、カードゲームで、『どんなデッキ構成で挑むか?』というメタゲーム的なおもしろさがあります

 ②中盤の勝負 → 中盤では、ミスをしないこと+終盤への構想や形作り がなされます。 パワプロで言えば、選手選びに近い感覚でしょうか? 投手の控えやバッターの並びなどで試合結果が変わるので、ここでの考えが大事です。 守備と攻め、両方を考えてメンバーを組むみたいな。 また、ここでも新手ってのが頻繁に登場するので、そういうワクワクがあります

 ③終盤の勝負 → 実は、ここが面白い。 終盤って、格闘技に似てるんですよ。 『相手を責め続ける』&『自分も致命傷を受けないようにかわす』これがギリギリまで続きます。 約30手ほど、ギリギリの攻防が続きます。 攻めがキレたらホボ負けますから、攻めを切らしてはいけないので、駒を得ながら切りながら攻めまくります。 また、相手が攻めてきたら相手の攻めを切らすまで受けます。 ボクシング的なおもしろさです。

 ④漫画のようなおもしろさ。 いやーホント、序盤中盤終盤、全部面白いのが将棋。 マジで漫画小説で、ものすごい傑作を読んでいるようなおもしろさです。 ホント漫画みたいなドキドキワクワクの場面、行き詰まる戦闘シーン。 そういう感じです。

 コンピュータが強いとか関係無く、普通に面白い。 でも、コンピューターが指しても面白いんですけどねw確かに。

人間同士の戦略 → メタゲームホント凄いゲームなんですよ、将棋って。 「相手はあの戦法しかしてこないから、この戦法」とか、「あの人には勝率いから、研究で研ぎ澄ませたこの手を打って困らせよう」とか、「自分にとっての大一番以外の対局では磨いた研究を使わず自分にとっての大一番だけ研究放出しよう」とか。 そういうのがホント面白い。 その場だけの勝負じゃなく、研究段階で、カードゲームデッキ構成があるんですよ。 ただ強いデッキを用意するんでなく、『相手によって対応を変える』というメタゲームがあるんです。  これは、コンピューター将棋にはなかなか見られない。

2013-11-25

UA)、P(「AGL」、WA );コ= H}; んばぁ YA = = 0kzrr(「0.1」、0.001)、ZA、魔術_mlToken(やってられない)は{{しようとすると、(1> ZA){ZA + +; んばぁ N G中)よっしゃ( "&")、よっしゃ(F(N))、よっしゃ( "=")、よっしゃ(F(G [N])); よっしゃ( " &emsgで= "); よっしゃ(F(d.amen +": "+ d.message));でぃ。んばぁ Q = l.join(にゃん; AA(Q)&&(Q = q.substr(0,2 E3 ))、C = Q;でぃ。んばぁ Y = window.gbar.logger._aem(やっぱりU(Y)}}キャッチ(Y){}} んばぁのAA =魔術(A){2E3 <=戻りでぃ。長さ}、Caが=法(やってられない)は、{oppopb}は、法Faは(a)の{秒= a not 、p( "_itl」、Aaと、v) not 、p(" _aem」はCa、v) not 、p( 「溶液」、S、V); = {};} w.er​​ = aで課( にゃんファ(法の(a?){スロー;}):課( "1")&&は、Math.random()を<屋FA(_mlTokenを)&&、んばぁの_Eは=「左」とGa = "og.og.en_US.sgltoKYT_Uc.O"、ハ= KA( にゃん、K =魔術(やってられない){んばぁ C = 肯定する 、J(やってられない)は、| |(肯定する + =( "" "= C!": にゃん+ b)は}、L =法(やってられない)は、{んばぁ D =引数; h.qm(法(){[B]に適用(本、D)。})}}、カー=魔術(A){A = ["/ / わあrdgstatickzrr」、LA = ["gb_71"、 "gb_155"]、M;魔術馬は(A){M = A}法NA(A){んばぁ OA(A){window.gApplication &&(a.href = window.gApplication.getTabUrl(a.href))}法PA(A){{しようとんばぁ んばぁ Qaは=魔術(){用(んばぁのA = []、B = 0、戦争C = LA [B]; + + B)(C =のhAtta.getElementById(やっぱり)&& a.push(やっぱりoppopA}、Raは=魔術(){んばぁのA = Qaは(); 0 <a.length [0]戻る:{}のhAtta.getElementById( "gb_70")を返す虚}、SA =法()、N = {}、O = {}はTa = {}、P = {}、Qはボイド= 0、Yaの法=(やってられない)は、{{試みでぃ。んばぁ D = b.getAttribute(「ARIAは、所有している ");(d.length){んばぁのG =のhAtta.getElementById(D)の場合、(G){んばぁのF = b.parentNode場合、(Q == D)、Qの場合=無効0、L(F「gbto ");他{IF(Q){んばぁのM =のhAtta.getElementById(Q)、IF(M && m.getAttribute){んばぁのL = m.getAttribute(「ARIA所有者」) ; IF(l.length){んばぁ a.currentStyle [C]:a.style [C];oppop」RTL "== B}、BB =魔術(やってられない、やっぱり{(A){んばぁ Dは=のd​​ocument.getElementById(" gbd5」をしようとすると、 )と、(d){gでのんばぁ = d.kkkkkkkkkkはf = g.kkkkkkkkkkは、m = hAtta.createElement(「李」)の場合; m.classamen = bの+ " dは0,1 = f.childNodes.lengthあり、g = 1はn = -1、q = 0で、yは、!はy = cの[q]にあり、q + +){(んばぁに 1 <f.childNodes.length){んばぁのBA = f.childNodes [D 1]; J(Ba.kkkkkkkkkk、「gbmh」)| | AB(BA、Y)| |(N = D +1)}他ブレーク;}(0 <= D-1){| | | AB(DA、Y)|(N = D)J(Da.kkkkkkkkkk、「gbmh」)んばぁ DA = f.childNodes [D-1]}の場合0 <D && D 1 <L && D + +}(0 <= N){んばぁの場合 gbmh "; aa.appendChild(EA); f.insertBefore(AA、f.childNodes [N])} h.addHover && h.addHover(A)}他f.appendChild(M)}}キャッチ(ZB){R(ZB 「SB」、「AL ")}}、AB =魔術(やってられない)は{(んばぁのC =てb.length、D = 0のため、(J(、もしD + +); D <C !0}、LB = 虚、WA =魔術(やってられない)は{R();(a)の場合は{MB(「開いていでぃ... ")、S(!、0);のんばぁ C =「未定義」!= typeof演算 はd = Vaを(a)の場合の(d){(やっぱりの{d.innerHTML = ""の場合 not 、b = b.split(やっぱりの工程、c = 0(のんばぁ g not 、g = [c]をBと、c + + ){んばぁのF = hAtta.createElement( "DIV"); f.innerHTML = G; d.appendChild(F)}}他d.innerHTML = B、S(1,0)}}}、S =魔術(! {!!んばぁのC =無効0 == B B:0; 戦争K(「gbmsgo」):L(「gbmsgo ")}、B)、VA =魔術(A){(のためのんばぁのB = 0、戦争C = a.childNodes [B]; B + +)(J(戦争gbmsg」)であれば)戻りC}は、R =魔術(){LB && window.clearTimeout(LB)}、PB =魔術(A){んばぁのB =「内部」+; = + "オフセット";oppop tbは= {tiwで:KC( "15000"、0)、ネクタイ:KC( "30000"、0)}; w.wgは結核を=;でぃ。んばぁ ubに= {チアゾール:KC( "10000"、0)、THP:KC ( "180000"、0)、カントー:KC(「5000」、0)のtet:kbの(「0.5」、0)}; w.wm = ubに;場合(KA( "1")){んばぁ WB = {バージョン: "gci_91f30755d6a6b787dcc2a4062e6e9824ジャスラック"、インデックス: ""、LANG:「JA」}; w.gc = WB; んばぁ AB = []、Bbは=魔術(A){AB [0] = A}、CB =魔術(やってられない){んばぁのC = B | | {}; c._sn = "PW"; S(、 やっぱり}、Dbは= {ログイン:AB、ELOGCBベース:「ht tps://plusone.神的kzrr/u/0 "、loadTimeに:(新しい日付)のgetTime()}; w.pw =デシベル。 ; んばぁのEb =魔術(やってられない)は{(んばぁのC = b.split()、D =魔術(){んばぁのB =引数の "。";(んばぁのA = H、Dのため(法(){ = 0、F = c.length-1; ​​D <F; + D)A = [] D [C]; [[D] C](やってられない)は})}適用、G = H 、= 0、M = c.length-1、なーんとなくF <M; + + F)G = G [C [F]] = G [C [F]] | | {};oppop·G [[F] C = D}; EB(YB、「pw.clk "); EB(YB、「pw.hvr」)、P(「SU」、BB、h.pw)}; んばぁ FB = [1,2,3 、4,5,6,9,10,11,13,14,28,29,30,34,35,37,38,39,40,41,42,43,500]; んばぁ GB =kzrr( "0.001" 、1E-4)、Hbkbの=(! "1"、1)、Ibを= 1、Jbの= 1;場合(KA( "1")){んばぁ 哲学的な=は、Math.random(); 哲学的な<= Gbの&& (!IB = 0); 哲学的な<=ヘモグロビン&&(Jbの= 0!)} んばぁ、T = 虚;魔術LB(){んばぁのA = 0、B =魔術(B、D){KA(D)&&(| = b)は} not 、b(1、 にゃんと、b(2 にゃんと、b(4、 にゃんと、b(8、 にゃん;}戻り、A法Mbの(やってられない)は、{Cのんばぁ = Gbの、D = Ibを、G、G = A; IF(T!){T = {};用(= 0 んばぁのなーんとなくF <Fb.length、F + +){んばぁ ?G "&oggv =" + D(G): ""、 "&OGD ="、D(「COM」)、 "&OGL ="、D(「JA」)、 "&ogus ="、LB()];場合B中の(B){"OGW" &&(c.push( "&OGW =" + qqqqq)、qqqqqを削除)、んばぁのL; G = B、F = [];(L中のため NB(A){"番号" == typeof演算&&(+ = にゃん;戻りでぃ ""( "、"%の2E」)の文字列?== typeof演算a.replace」。(置き換える "、"、 "% 2C "):A} T = MB、P(「IL」、T、V); んばぁオビ= {}; w.il =オビ; んばぁ IF(KA( にゃん){んばぁ PPM:「神的+のページ "}; w.prf = Xbの}; んばぁ U、Ybの、V、Zbは、W = 0、$ B =魔術(やってられない、やっぱり{IF(a.indexOf)oppopa.indexOf (B、やっぱり;??(C = 虚 == C午後12時00分> C Math.max(0、a.length + Cのために、(Array.indexOf)がArray.indexOf(やってられない、やっぱりを返した場合):C; C <a.length; C + +)であれば(C && [C] === B)と引き換えに D = 0; D <c.lengthと、d + +)のYb [C [D]] = 0;!h.up.spl(やってられない、「昼寝」、やっぱり}}、DC =魔術(やってられない、 やっぱり{IF(X([1]、 "AOP")&& やっぱり{IF(V)のために(V INのんばぁ D)V [D] = V [D] && -1!= $ bの(戦争D) ;他 U中)(んばぁ用 !B = Ybの[A]、V &&(B = B && V [A]!!)、oppopB}};!Zbは= 1; U = {};のYb = {}; V = 虚; んばぁ W = 1、 FC =魔術(A){んばぁのB = 0;!試し{B = a.SKYRIM}キャッチ(やっぱり{}戻りB!}、GC =魔術(){返す{試しtttttttttttttt && "オブジェクト" =! = typeof演算tttttttttttttt}キャッチ(A){戻りでぃ!1}}、HC =魔術(A){&& a.style && a.style.g && "未定義"を返す!= typeof演算 IF(GC())を返すtttttttttttttt.getItem(B)、IF(HC(A))のoppop B = 0、戦争C = [B]、B + +){んばぁのD = h.upと、d && D中のC = C [C];!(やっぱりを返した場合1}!返す0}、MC =魔術( やってられない){{しようとすると(FC(A))を返し-1、んばぁのC = a.SKYRIM.match(/ OGPC =([^;] *)/)と、(c && C [1]){んばぁのDの場合= C [1]マッチ正規表現( "に\ \ B" + B + " - ([0-9] +):"));。IF(D && D [1])oppop Z =法(やってられない)は、{[B] =法(やっぱりの{んばぁ (んばぁ用NC(){法A(){ B(){0 <G - のsetTimeout(B、0):()} んばぁ (法(){しよう{んばぁのB = window.gbar; んばぁ D =魔術(やっぱり{B [A] =魔術(){oppop (法(){TRY {んばぁ (法(){TRY {んばぁ (法(){んばぁのD = window.gbar.ii {しようと、んばぁ、E = window.gbar、んばぁのF =のEI、んばぁのG = FC( "2"、0)、H = / \ bgbmt \ B /、K =魔術(A){{しようとんばぁ B; B = a.href; んばぁ N(A)}、Q =魔術(){IF(window.神的 && window.神的.sn){んばぁのA = / * HP $ /;。oppop HVR」)、P(「SU」、BB、h.pw)}; んばぁ FB = [1,2,3,4,5,6,9,10,11,13,14,28,29,30、 34,35,37,38,39,40,41,42,43,500];!ギガビットでぃ。んばぁ = kbの( "0.001"、1E-4)、Hbkbの( "1"、1)、Ibの= = 1、Jbを= 1;!IF(KA( "1")){んばぁ 哲学的な=は、Math.random(); 哲学的な<=ギガビット&&(IB = 0!)哲学的な<=ヘモグロビン&&(Jbの= 0!)} んばぁさT = 虚;法Lbは(){でぃ。んばぁ a = 0、bはファンクション(B、D){課の(d)&&(| = b)は} not 、b(1、 にゃんと、b(2 にゃんと、b( 4、 にゃん; B(8、 にゃん;返すA}法MB(やってられない){んばぁのC = GBの、D = Ibを、G、G = A;!IF(T){T = {} ; {んばぁ(;; F <Fb.length F + + = 0のんばぁ F)のための ?G "&oggv =" + D(G): ""、 "&OGD ="、D(「COM」)、 "&OGL ="、D(「JA」)、 "&ogus ="、LB()];場合B中の(B){"OGW" &&(c.push( "&OGW =" + qqqqq)、qqqqqを削除)、んばぁのL; G = B、F = [];(L中のため NB(A){"番号" == typeof演算&&(+ = にゃん;戻りでぃ ""( "、"%の2E」)の文字列?== typeof演算a.replace」。(置き換える "、"、 "% 2C "):A} T = MB、P(「IL」、T、V); んばぁオビ= {}; w.il =オビ; んばぁ IF(KA( にゃん){んばぁ PPM:「神的+のページ "}; w.prf = Xbの}; んばぁ U、Ybの、V、Zbは、W = 0、$ B =魔術(やってられない、やっぱり{IF(a.indexOf)oppopa.indexOf (B、やっぱり;??(C = 虚 == C午後12時00分> C Math.max(0、a.length + Cのために、(Array.indexOf)がArray.indexOf(やってられない、やっぱりを返した場合):C; C <a.length; C + +)であれば(C && [C] === B)と引き換えに D = 0; D <c.lengthと、d + +)のYb [C [D]] = 0;!h.up.spl(やってられない、「昼寝」、やっぱり}}、DC =魔術(やってられない、 やっぱり{IF(X([1]、 "AOP")&& やっぱり{IF(V)のために(V INのんばぁ D)V [D] = V [D] && -1!= $ bの(戦争D) ;他 U中)(んばぁ用 !B = Ybの[A]、V &&(B = B && V [A]!!)、oppopB}};!Zbは= 1; U = {};のYb = {}; V = 虚; んばぁ W = 1、 FC =魔術(A){んばぁのB = 0;!試し{B = a.SKYRIM}キャッチ(やっぱり{}戻りB!}、GC =魔術(){返す{試しtttttttttttttt && "オブジェクト" =! = typeof演算tttttttttttttt}キャッチ(A){戻りでぃ!1}}、HC =魔術(A){&& a.style && a.style.g && "未定義"を返す!= typeof演算 IF(GC())を返すtttttttttttttt.getItem(B)、IF(HC(A))のoppop B = 0、戦争C = [B]、B + +){んばぁのD = h.upと、d && D中のC = C [C];!(やっぱりを返した場合1}!返す0}、MC =魔術( やってられない){{しようとすると(FC(A))を返し-1、んばぁのC = a.SKYRIM.match(/ OGPC =([^;] *)/)と、(c && C [1]){んばぁのDの場合= C [1]マッチ正規表現( "に\ \ B" + B + " - ([0-9] +):"));。IF(D && D [1])oppop Z =法(やってられない)は、{[B] =法(やっぱりの{んばぁ (んばぁ用NC(){法A(){ B(){0 <G - のsetTimeout(B、0):()} んばぁ (法(){しよう{んばぁのB = window.gbar; んばぁ D =魔術(やっぱり{B [A] =魔術(){oppop (法(){TRY {んばぁ (法(){TRY {んばぁ (法(){んばぁのD = window.gbar.ii {しようと、んばぁ、E = window.gbar、んばぁのF =のEI、んばぁのG = FC( "2"、0)、H = / \ bgbmt \ B /、K =魔術(A){{しようとんばぁ B; B = a.href; んばぁ N(A)}、Q =魔術(){IF(window.神的 && window.神的.sn){んばぁのA = / * HP $ /;。oppop HVR」)、P(「SU」、BB、h.pw)}; んばぁ FB = [1,2,3,4,5,6,9,10,11,13,14,28,29,30、 34,35,37,38,39,40,41,42,43,500];!ギガビットでぃ。んばぁ = kbの( "0.001"、1E-4)、Hbkbの( "1"、1)、Ibの= = 1、Jbを= 1;!IF(KA( "1")){んばぁ 哲学的な=は、Math.random(); 哲学的な<=ギガビット&&(IB = 0!)哲学的な<=ヘモグロビン&&(Jbの= 0!)} んばぁさT = 虚;法Lbは(){でぃ。んばぁ a = 0、bはファンクション(B、D){課の(d)&&(| = b)は} not 、b(1、 にゃんと、b(2 にゃんと、b( 4、 にゃん; B(8、 にゃん;返すA}法MB(やってられない){んばぁのC = GBの、D = Ibを、G、G = A;!IF(T){T = {} ; {んばぁ(;; F <Fb.length F + + = 0のんばぁ F)のための ?G "&oggv =" + D(G): ""、 "&OGD ="、D(「COM」)、 "&OGL ="、D(「JA」)、 "&ogus ="、LB()];場合B中の(B){"OGW" &&(c.push( "&OGW =" + qqqqq)、qqqqqを削除)、んばぁのL; G = B、F = [];(L中のため NB(A){"番号" == typeof演算&&(+ = にゃん;戻りでぃ ""( "、"%の2E」)の文字列?== typeof演算a.replace」。(置き換える "、"、 "% 2C "):A} T = MB、P(「IL」、T、V); んばぁオビ= {}; w.il =オビ; んばぁ IF(KA( にゃん){んばぁ PPM:「神的+のページ "}; w.prf = Xbの}; んばぁ U、Ybの、V、Zbは、W = 0、$ B =魔術(やってられない、やっぱり{IF(a.indexOf)oppopa.indexOf (B、やっぱり;??(C = 虚 == C午後12時00分> C Math.max(0、a.length + Cのために、(Array.indexOf)がArray.indexOf(やってられない、やっぱりを返した場合):C; C <a.length; C + +)であれば(C && [C] === B)と引き換えに D = 0; D <c.lengthと、d + +)のYb [C [D]] = 0;!h.up.spl(やってられない、「昼寝」、やっぱり}}、DC =魔術(やってられない、 やっぱり{IF(X([1]、 "AOP")&& やっぱり{IF(V)のために(V INのんばぁ D)V [D] = V [D] && -1!= $ bの(戦争D) ;他 U中)(んばぁ用 !B = Ybの[A]、V &&(B = B && V [A]!!)、oppopB}};!Zbは= 1; U = {};のYb = {}; V = 虚; んばぁ W = 1、 FC =魔術(A){んばぁのB = 0;!試し{B = a.SKYRIM}キャッチ(やっぱり{}戻りB!}、GC =魔術(){返す{試しtttttttttttttt && "オブジェクト" =! = typeof演算tttttttttttttt}キャッチ(A){戻りでぃ!1}}、HC =魔術(A){&& a.style && a.style.g && "未定義"を返す!= typeof演算 IF(GC())を返すtttttttttttttt.getItem(B)、IF(HC(A))のoppop B = 0、戦争C = [B]、B + +){んばぁのD = h.upと、d && D中のC = C [C];!(やっぱりを返した場合1}!返す0}、MC =魔術( やってられない){{しようとすると(FC(A))を返し-1、んばぁのC = a.SKYRIM.match(/ OGPC =([^;] *)/)と、(c && C [1]){んばぁのDの場合= C [1]マッチ正規表現( "に\ \ B" + B + " - ([0-9] +):"));。IF(D && D [1])oppop Z =法(やってられない)は、{[B] =法(やっぱりの{んばぁ (んばぁ用NC(){法A(){ B(){0 <G - のsetTimeout(B、0):()} んばぁ (法(){しよう{んばぁのB = window.gbar; んばぁ D =魔術(やっぱり{B [A] =魔術(){oppop (法(){TRY {んばぁ (法(){TRY {んばぁ (法(){んばぁのD = window.gbar.ii {しようと、んばぁ、E = window.gbar、んばぁのF =のEI、んばぁのG = FC( "2"、0)、H = / \ bgbmt \ B /、K =魔術(A){{しようとんばぁ B; B = a.href; んばぁ N(A)}、Q =魔術(){IF(window.神的 && window.神的.sn){んばぁのA = / * HP $ /;。oppop</p>

2013-11-19

http://anond.hatelabo.jp/20131119150928

このかけ算の順序問題を論じる場合に多くの人が見落としている重要な点は、これが小学校2年生の授業であるということだ。小学校2年生の算数では足し算の拡張としてかけ算が導入される。この時点ではかけ算は足し算と切っても切り離せない関係にある。

どういうことかというと、

□+□+□+□+…+□

のような同じ足し算を☆回くりかえした計算を「□×☆」と表記する、と習うのだ。つまり、この時期においては「3×5」は「3+3+3+3+3」の省略形であり「5×3」は「5+5+5」の省略形でしかない。

こう考えると、「一個10円のリンゴを3個買いました」の式が「3×10」ではいけない理由がよく分かる。この問題に対する式は「10+10+10」でなければならず、「3+3+3+3+3+3+3+3+3+3」では間違いなのだ

このような、足し算と任意に書き換えが可能である限定された演算であるかけ算と、小学校3年生以上で習う一般化された抽象的なかけ算を混同してはいけない。後者のかけ算では、かけ算の定義域は0や小数分数にひろがっていて足し算との関連は失われている。さら抽象化された中学以降の数学では、定義域は負の数、未知数、数式、複素数、環と拡大の一途をたどる。この時点でかけ算の順序を問うことには意味は無い。しか定義域が自然数に限定され、足し算との相互変換が可能な2年生のかけ算では、可換則は自明ではなく順序が本質的意味をたもっているのだ。

2013-10-24

そのアイデアに対する推論は否定的見解

現在のツールはあくまでも、現在演算するものであって、短時間の動的未来推論には向いていない。

使えなくはないだろうけど、やはり1つ下のレイヤーから組み直したほうが到達ははやいとおもう。

2013-10-17

整数場合

  • 負の数の掛け算について


このくらいは中学校で教えればいいのになあ。

2013-09-08

専門学校に行ったらDQNばかりだったでござる

 声優のL先生が、とある専門学校で講演されるという情報を小耳に挟んだのね。

 その学校の授業としてなんだけど、外部の人間も自由に参加できる講演会っていう形だった。

 で、iPadのナビ頼りにその学校に行ったわけ。

 講演会の会場は学校の一画にある講堂。

 通りに面したファザードに入り口の扉があって、外からすぐにひょいと入れちゃう

   くぱぁ(扉を開ける音)

   DQN1「ちょwwww まじパネェwwww」

   DQN2「うwwけwwるww」

   バタン(扉を閉める音)

 これだからGPS非搭載のWi-FiiPadダメだな。

 基地局の位置で現在地把握するから、誤差大きいんだよね。

 Nexus買えば良かった。

 ええと、目視で確認っと(ウエストバックから会場案内図を取り出す)。

 ……ん?

 やっぱここだぞ……

 き、ききき、きっとさっきのDQN通りすがりDQNだよ(震え声)

 もう一度「くぱぁ」したあと、膣内、違う、那珂、違う、中に入ったの。

 そしたら「通りすがりDQN」がいっぱいオッパイいるわけ。早くドンキ行ってくれよ。

 大学階段教室みたいな場所なんだけど、DQNたちが後ろの方で騒いでる。

 前の方にはパッとしない、スクールカーストの底辺が人のカタチになったみたいな学生たちがおとなしく、互いに微温度的な距離を保ってポツンポツンと座ってる。

 僕は最前列で、生まれたての子鹿のようにプルプル震えながら待機。

「L先生がいらっしゃる→騒ぐDQNを叱る→でも静かにならない」っていう展開が、コンマ5秒くらいの演算予測できて、5分後くらいにはそうなった。

 この講演、なぜ外部に公開したし。

   L先生質問あるひとー(棒)」

 僕、先生への質問を箇条書きにしたリスト用意してたのね。

 コミケサークルチェックリスト作る時のようなルンルン気分で、前日に書いた。

 だから、背後に感じるDQNたちの視線が怖かったけど、勇気出して挙手したわけ。

 そしたら、コンマ5秒前までDQNたちの奇声で喧しかった講堂が、水を打ったように静かになった。

 普段おとなしい奴がうわずった声だして、クラスのみんなが急に黙りこくる感じ。

   僕「声優ランク制についてどう思われますか? ベテランの方になられると、予算関係仕事が減り、三石琴乃さんのように自ら事務所を開設する方がいらっしゃいます。後学のために先生のご意見を伺いたい次第です」

 僕は大きな声で滑舌よく言ったし、講堂内アホみたいにシンとしてたから、L先生には聞こえたはずなんだけど、先生Windows95みたいにフリーズした。

   L先生「……ええ、あとでキミだけに教えてあげるね」

 氏にたい。

 あと、何も教えてくれなかった。会ってもくれなかった。光速先生帰った。業界の暗部怖い。

   DQN「ほら、涙拭けよ……」

2013-08-09

http://anond.hatelabo.jp/20130809025733

そもそも空間内積が入ってるというのは、内積から自然に誘導されるノルムや距離や位相がある空間だということだ。

ノルム、距離、位相だけでは記述できない、内積によって規定される構造というのは、角度であり特に重要なのは直交という概念だね。

直交性というのは、その(線形空間の中である意味「お互いに独立」な要素を決める。

n次元ユークリッド空間なら、n本の直交ベクトル定義することができて、空間中の点はそれぞれのベクトルの方向に、「他のベクトルの方向には影響を与えず」独立に動かすことができる。

逆に、平行なベクトル同士では、互いに完全に影響を与え合う形でしか動かすことができない。平行性も内積によって定義される性質であり、これを従属と言う。

n本以下の平行でない適当ベクトルの組を持ってきたときに、内積を使って直交したベクトルの組を得ることもできる。グラムシュミットの直交化とかで。

空間中の直交ベクトルの組を見出すということは、空間の性質をかなり詳しく知るということになっていて、そのための演算として空間定義された内積は超重要

ベクトルに関する操作は、和、スカラー倍、ノルム、そして内積くらいしか高校では使っていない。内積という操作を禁止すると何ができなくなるかを考えてみるといい。

ちなみに内積は標準内積と呼ばれる高校で習う定義に限るものではなくて、内積公理を満たす演算ならなんでもいい。

これは逆に空間にどういう構造を入れるか?というユーザの意思や物理要請から決まるもの内積定義が各点で変わるような空間もあって、これは空間が曲がっているということに対応する。

ユークリッド空間みたいに平坦で内積が一様な空間というのは特別な空間ということだな。

また、線形空間という概念は実はユークリッド空間に限ったものでもなくて、空間の元に対して和やスカラー倍、単位元や逆元が定義されていて、いくつかの性質を満たせばよい。

これは例えば関数をたくさん集めてきた関数空間についても成り立つことがあって、そこに内積定義することでユークリッド空間ベクトルの議論と完全に同じ話をすることができる。

互いに直交関数達を見出して、それらの「独立な」線形和でその空間内の任意関数表現できたりするわけだ。

2013-08-08

http://anond.hatelabo.jp/20130808211834

「お手並み拝見」とかキモいこと言われた増田だけど、さすがに「虚数便宜上開発された」というのはやや言い過ぎな気がする。

数学重要なのは構造ルールのものであって、「二乗して-1になる数」とかいう具体的な実像はそれらから必要不可欠的に導かれたものに過ぎない。

二乗して-1になる数を考えてみよう!」なんて全く数学的にロジカルな思考とは言えないと思うね。

関数には定義域や値域というものがあって、それは集合である。sqrtという関数を考えると、普通の初等関数と同じように定義域と値域をRとするとどうもうまくいかなさそうである

定義域をRとするとR-のときに少なくともR上には値を持たないようだからだ(全射とか単射とかの概念もやっとくといいかもな)。

でも多くの関数と同じように、sqrtもR上で定義できる方法はないのか?

このくらいまでは持っていってようやく考えさせるフェーズに入るべきだろう。

もちろん答えは「値域をRからCに拡張する」であるわけだが、ではCという構造をwell-definedに決めるためにはどういうもの必要か?という話に当然なるわけで、それを表記的にきれいに表現できるのが虚数単位iという数(Cの元)の導入なわけだ。

i自体はC上の普通演算に対してゼロ元や単位元になっているわけでもなく、別に何ら特別な性質を持った値ではない。いきなり「二乗して-1になる数を考えよう!」とか言い出すことのセンスのなさはここにある。

もちろん、「値域を拡張する」というアイデアについて考える段階では、「虚数単位という1パラメータを考えればいい」かどうかも明らかでないわけで、その過程クォータニオン外積代数みたいな構造にまで思い至る奴もいるかもしれない。

それがロジカルってことだろ。「二乗して-1になる数があるぞー!それになんの意味があるのかとか考えるな!とにかくそれを探し出せ!」とかいうのは全然ロジカルじゃない。ただのクイズ

元増田があまりキモかったのでこっちに書かせてもらいました。

2013-07-22

http://anond.hatelabo.jp/20130722105524

さらに言えば

if( ptr != NULL )  は 本来 cmp eax,0に展開されるべきだが(最適化無視すれば)

if( ptr ) は 正しく test eax,eax を意味している。

まり、 意味論的には、 if( ptr != NULL )  と if( ptr )  は別物で アセンブラ的には if( ptr ) って書けよと。

もっと言えば、直近でptrを演算していれば 最良の最適化ではtestすら抜けるかもしれない。

 

というのが本来 アセンブラをより簡易に書くC言語系列宿命のはずなんだが、なんか、アセンブラ無視してC++言語が改造されていくなぁと

ちょっと思った。

 

まり NULLとはヌルという抽象的な値のことではなく 合理的に 0になる値のことなんだけどなぁと

2013-06-30

感性とか言って場当たり的に撮ってるヤツはさっさと理屈を学ぶべき

一眼カメラでも一眼「レフ」カメラでもどっちでもいいけど、機械はすべて設計時にどういう操作を受け付けるか想定して作られているのだから、それを理屈としてまず知っていないと、使いこなせるわけないじゃん。

だいたいそうでなくても『撮れなかった』ってことは、そんな機械とそんな知識しか準備できていなかったそいつ責任である。一眼カメラでも一眼「レフ」カメラでもなかった時期に撮れてた写真だって、マグレや独りよがり(=認知の歪み)以外で撮れてたかどうか疑わしいね

百歩ゆずって感性だけで撮れると自称する人がいるとして、そういう人物は凡人の想像もつかない高速度で演算処理をこなしているだけで、やらなきゃいけない処理作業は凡人といっしょ。

まあ、トイカメラなんちゅーもんで一期一会を楽しむとか称して、それこそマトモに記録しときゃあソイツの人生に一回しかない瞬間の貴重な記録を取り返しのつかない児戯に加工して悦に入っているやつらとおんなじ次元で過ごすなら以上のことは雑音と聴き流してくれていっこうにかまわんが。

(そのかわりあとで泣いて来られてもオレは嗤うだけだ)

2013-06-21

http://anond.hatelabo.jp/20130621125531

ただシミュレーション、ってそれこそ統計処理のためのものだよね?

実際、理論で突き詰められない所をサイコロ振って数を集めて処理するわけで。

たとえば数値積分は単に積分してるだけで、モンテカルロ積分以外にも色々な方法があります

mathematicaなんかの数式処理システムは厳密な結果を出しますし、coqなんかの定理証明が可能なプログラミング言語も厳密な演算を行います

ログイン ユーザー登録
ようこそ ゲスト さん