「整数」を含む日記 RSS

はてなキーワード: 整数とは

2014-06-19

関数型言語

ランダム整数ランダムな個数引数に渡されて、それらを添字順にひとつずつ足して行き、50を超えたらそれまでの配列の中身を返す」みたいなのってどうやって書くんだろう。

手続き的に書くなら

var randoms = [10, 20, 1, 6, 8, 0, 0, 0, 20, 10];

var total = 0;

for (var i = 0, len = randoms.length; i < len; i++) {

if (total > 50) break;

total += randoms[i];

}

return randoms.slice(0, i);

みたいな感じですぐ思いつくんだけど、純粋関数型って変数も許してないしこういうやつは reduce するんでしょ。

まったくわからない。できないんだとしたら何が優れてるんだ。

もちろん、関数型的に each とか map とかすると見やすくなるケースが多いのはわかってるけど。

できること、できないこと、そういうのがあるから結局マルチパラダイム言語でいい感じに取捨選択してねーってことなのかなあ。

2014-05-30

考証1

議論していて、とても板がみずらいので。

こちらをお借りします。

そもそも、"ルールシステム特許になる"という彼の前提で

幾つか記憶を頼りに特許権を打ち砕いていこうと思います

269 :(´ー`)y─┛~~ ◆UxQ8uxJMok:2014/05/31(土) 20:12:01.17 発信元:123.225.138.170

>>266

> 全てこちらの論証通りとさせていただくだけですので、

> 私としては問題ございません。

オマエが真似れば殺しに行くだけだからこっちも問題ない。

という訳で、上記のとおり、

下記論証で解決いたしました。

スレ汚し、大変失礼いたしました。

01.連番召喚。場札を出す処理に連番の条件を要す処理。

⇒7並べ、大富豪にて類似システムあります

   連番召還ではないですが、「場札を出す処理に連番の条件を要す」に該当。

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> 「場札を出す処理に連番の条件を要す」に該当。

↑場札が1枚の場合に「出す条件で連番」が満たされてないので反論として破綻。 ほぃ、論破完了ww

との反論がありましたが、

連番とは

複数の番号が連続していること。また、その番号。

とのことですので、1に対する2、2に対する1も連番となります

2つ以上の整数があれば成り立つ形式ですね。

場札が0の場合に関しては七並べではおきえない状態ですし、

こちらの特許も範囲外なので、例外処理です。


02.山札が尽きたら、コストを払わずプレイできる処理。

何をですか?

特許というからには「何のリソースコストとして用い」

「何のプレイを行う」のかによって異なると思いますが……。

ちなみに山札がつきた際に自動誘発する効果であれば、

コストを支払わない処理に該当するのかと思います

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> 山札がつきた際に自動誘発する効果

↑まず、その「山札がつきた際に自動誘発する効果」とやらを具体的に提示できねば反論として破綻。 ほぃ、論破完了ww

こんな初歩的な質問が来るとは……侮っておりました。

基本的に、「デッキが0枚なら敗北する」というルールエフェクト

「山札が尽きたとき自動誘発する効果」なのですが、多分聞き入れられませんので具体例を。

Laboratory Maniac / 研究室偏執狂 (2)(青)

クリーチャー人間(Human) ウィザード(Wizard)

あなたライブラリーカードが無いときあなたカードを引く場合、代わりにあなたはこのゲームに勝利する。

2/2

万が一の保険

[部分編集]

刻の末裔 / エクステンションブースター

OPERATION

O-73 青 1-3-0 R

(自動A):自軍本国が0枚になっても、自軍プレイヤーは敗北しない。

(自動D):自軍本国が0枚になった場合、このカードゲームから取り除く。その場合、自軍本国を5回復する。

アンドリュー・バルトフェルド

蒼海の死闘 / エクステンションブースター2

CHARACTER(UNIT)

CH-S29 白 2-3-1 R

砂漠

【(自動A):自軍本国が0枚になっても、自軍プレイヤーは敗北しない】

【(自動D):ターン終了時に自軍本国が0枚である場合、そのターンの終了直後、自軍プレイヤーの新たなターンを開始する。新たなターンの終了時、自軍プレイヤーは敗北する】

MTGは若干異なりますが、ガンダムウォーカード勢は

「山札がつきた際に自動誘発する効果」とやらを具体的に提示してみました。

山札が尽きたら、コストを払わずプレイできる処理の一例です。

手札からじゃない:特許項目02に記載がないので割愛します。

破壊するって書いてある:それも含めての誘発効果です。「コストの支払い」は行われません。

04.数字1つで2つの反比例した表現戦闘力と、速度または類似の序列 など)。

戦闘力と速度が反比例している――だとっ!?

速度と戦闘力は反比例しない、凄い速度は威力に等しいので前提が崩壊しています

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> 速度と戦闘力は反比例しない

↑当該ゲームシステムについての記述なので、お前は議論の対象を履き違えており反論として破綻。 ほぃ、論破完了ww

すごい!超時空会話が出来ました!

まず、その「当該ゲームシステムについての記述」とやらを具体的に提示できねば反論として破綻

05.自由に選んだ最初の手札で、ゲームを開始するシステム

手札の定義をしてください。

  まさか、全てのゲームに手札があると思っているわけではないですよね?

私ですらゲームをつくる際には「このゲームは~~を手札とします」という定義を行います

  ちなみに「最初に選んだ手持ち札」という前提であれば、金色のガッシュベルTCGの魔本でやっています

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> 金色のガッシュベルTCGの魔本でやっています

↑手札とは任意に選択できる札であり、ガッシュベルTCGは選択できない仕様から山札に該当する。 ほぃ、論破完了ww

デッキの1枚目と2枚目が手札になる仕様というだけで……「任意に選択できる」のですが。

あれ? なにか私分かり難いこと言いました……?

一応、ポケットモンスタークメン列伝という、手札を全て任意に選べるものもありますから

そういう方向性を話した方がよかったのですかね?

06.山札から手札へ移動させず、原則として手札を場(場札)から追加するシステム。 【完了

  手札の定義をしてください。

  まさか、全てのゲームに手(ry

  ボードゲームとかでは、場にある3枚のカードから好きなのを手札に移していいよ、とか良くありますね。

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

◆UxQ8uxJMok :2014/05/30(金) 23:40:05.89 ID:mGswB6A1

の記載にて反論が認められませんでした。

当該項目に関しての検証完了させていただきます

08.標的を指定できない限定的行使権利行使権)と標的を指定する権利(標的指定権)等に、優先権を細分化したシステム。 【完了

   優先権は元々細分化されているので、そもそも論理が成り立っていないかと……。

  ttp://mtgwiki.com/wiki/%E5%84%AA%E5%85%88%E6%A8%A9

   ちなみに、この項目がTCGに限っていないので、TRPGウォーゲームなどでは乱戦処理などで

「標的を指定できない限定的行使権利」や遠距離攻撃の一方的に「標的を指定する権利」がありますね。

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> この項目がTCGに限っていないので

パクリ兆候を感じた段階で、裏取りせず下記の警告文が送られ、そのトレーディング・カードゲーム制作者は~。

↑実物カードゲームhttp://ai.2ch.net/test/read.cgi/entrance2/1395426290/の~。 カードゲーム限定ね。 ほぃ、論破完了ww

すごい行間を読むと、確かにそうなっているみたいですね、難しいですが。

下の項目は論破(?)されてしまいましたが、

上記優先権に関しての記載にて反論が認められませんでした。

当該項目に関しての検証完了させていただきます



09.他者側に干渉する選択の直後に、強制的自分優先権が被干渉側に移動する処理   

遊技王の優先権の処理は必然的にこうなるようになってませんでしたか

   ttp://yugioh-wiki.net/index.php?%CD%A5%C0%E8%B8%A2=

カードを1枚使用すると、優先権が移行するので。

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> ※カードを1枚使用すると、優先権が移行するので。

↑その1枚が「相手に干渉」しないのに移行するのだから当方の内容とは一致せず。 ほぃ、論破完了ww

それであれば、「特に本校に記載されている"特別な許諾行為"を行わずとも"当該行為と同様の処理は行うことができる"」ということですね。

特許権にあります有用発明」項目の独自性に含まれないため、特許権としての効力を失います

もし、「相手に干渉しない場合の行動は続けられる」という場合では他カードゲームよりも優位性はないので、

有用発明」項目の独自性に含まれないため、特許権としての効力を失います

この場合はどちらの選択肢を取られるのでしょうか……?

10.速度や類似の序列で、優先権プレイ権限など)や手番(ターン)を獲得する処理。

  その昔、実際のTCGとして出たアルテイルにはAgi(素早さ)の処理がありました。

どちらのターンであれAgi順に優先権が決定していたと思います

  うろ覚えですが、グリモアペインは例外だった気がします。

◆UxQ8uxJMok :2014/05/30(金) 23:39:14.66 ID:mGswB6A1

> アルテイルには~ Agi順に優先権

> 「クルセイド」には

↑それらは攻撃順序の判定であり、「優先権の移行判定」や「先攻/後攻の判定」ではない。 ほぃ、論破完了ww

攻撃順序の判定ではありません、上記に記載した通り「優先権」を得ます

「移動、待機、スキル使用、攻撃の判定を能動的に宣言できるタイミングである優先権」を得ることが出来るのです。

優先権を持っているプレイヤーが全ての行動ができる」とは限りませんので、覚えておくとよいですよ。

>>maitnagele ,sirua subilauin ertsepmC

2014-05-08

数学の本もこれだけの分量だと、文系では厳しい気がしますね。

http://anond.hatelabo.jp/20140506144603

これだけのものを「ちゃんと」読めば、そりゃあなんとかなるでしょう。

しかし、何万円になるんだ。

2014-03-04

必要コメントの例

void print_number(int n); //  nは 正の整数である必要があり負の場合は終了する

(など特殊な条件)

必要コメントの例

void print_number(int n); //  nを表示する

 

コメントには、見てわからない注釈コメントを書くものであって

見てわかるものを書くものではない。

int n ; // 整数 n

いらんわ!

2013-12-31

大晦日なので算数の問題を解きましょう

1 ≦ n_i ≦ 9なる整数n_i (i = 1,2,3,4 )について,n_iの値を無作為に決定する場合

問1.

n_1 * n_2 = n_3 * n_4が成立する確率を求めよ.

問2.

n_1 * n_2 = 10*n_3 + n_4が成立する確率を求めよ.

2013-10-26

http://anond.hatelabo.jp/20131026024434

中学生に要求しない」なら間違ったことを教えてもいい、という考え方はなんなの?

a/0=0(a>0)と小学生に教える、という話も聞いたことあるが、教育水準が低いからと言って嘘を教えていいという理屈マジで理解できない。

包含無視するなら、整数自然数実数に含まれるとか、そういうことについても嘘つくのか?

俺は別に数学者じゃないけど、線形代数とか微分幾何とか測度論的確率論とかは仕事普通に使うよ。

http://anond.hatelabo.jp/20131026004738

正方形長方形の一部で、長方形平行四辺形の一部だとか、

正三角形二等辺三角形の一部って習ったけどなあ

せんせえが黒板にグループの図みたいなのを描いてたからよく覚えてる

 

整数の掛け算に順序がどうのとかあほなこと抜かすぐらいだし、算数教育はあたまおかし

2013-10-17

整数場合

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


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

2013-09-10

自由意志による結婚が難しいのなんて考えてみると当たり前では

結婚した夫婦のうち離婚するのは約1/3らしいが

日本離婚コストの高さを考えると、中々高い数値だと思う

しかも、離婚結婚生活破綻だけど、離婚しなかったからといって幸せとは限らんよな

配偶者が嫌だのうざいだの死んでほしいだの、四六時中言ってる人はリアルでもネットでもまったく珍しくない

多少多めに見積もって、半分ぐらいは共同生活の運営に失敗してるのではないか

で、考えると、「自分の意思で結婚を選択し、維持し続ける」って割と難しい行為だよな

協調の維持ってそもそも難しかった

家事やら、子育てやらを単純に「労働」とみて、生活費の配分を「利益分配」と捉えて個人としての経済的利益を大きくしようとすると

いかに相手にやらせるか」「いかにして相手から分捕るか」って話になる

結婚だけじゃなく、あらゆる共同作業でありうる話だけど、ただ乗りしてくる奴にペナルティ必要

会社みたいに全く働かない奴はある程度排除できれば問題ないけど、結婚場合はその時点で破綻する

からあらかじめ、「自分負担を最小にしよう」ではなく、「なるべく平等コスト負担しよう」という

合意形成必要ってのは、一見明らかな気がするけど、これって実はかなり難しい

家事等を全部半々にすればいいじゃん、という人も居るけど、どれくらい家庭の外で労働してるかは違うから

客観的に見て「これが平等労働配分」ってのは定義しづらい。それこそ「家事労働年収千万」なんていう人も出てくる

そうするとどうなるかというと、交渉と駆け引きの問題になる

交渉と駆け引きって、まず個人の能力依存する上に、

ゼロサムから自分利益主張するほど破綻につながる。だから結婚を維持したいと思ってる側が「不利」になり、破綻してもいいかと思ってる側が「有利」という話になる

お互いの能力結婚維持した気持ちが拮抗してればいいけど、差が出ると年収800万で小遣い1万の哀れなおっさんやらが誕生するわけだ

超単純モデルで考えると、破綻したり、一方が大損したりすることを排除できないどころか誘発するシステムとわかる

破綻コストをでかくするのが手っ取り早いが…

はいえ、結婚生活終わらせるのもコストがかかるのは事実。これをでかくすれば破綻しないわな

まず社会が支払わせるコスト裁判所結婚破綻の原因と認定した方に相手への賠償金払わせる上

離婚者はバツn(nは1以上の整数離婚経験回数)という不名誉レッテル貼られて、再婚しにくくなり、煩い親戚にゴチャゴチャ言われるわけだ

前者に関しては必ずしもデメリットにならんし(むしろ利益になることもあるので、これ自体が破綻リスク高めることも)

後者に関しては、バツnの人々が増えるにつれて社会圧力は弱まっていく傾向にある。今後もそうなるだろう

次に子供処遇。これはなかなかコストがでかい

親権もった方は再婚しない限りシングルで育てなきゃならんし、そうじゃないほうも養育費がかかる

配偶者に何の情もなくても子供への悪影響や偏見心配して離婚しない場合も多々ある。血縁関係結婚と違って解消できないしね

しかしこのコストも将来的には減少していくのではないかと思われる

子供への偏見に関しては絶対数の増大にともなって漸減するだろうし、社会福祉も(どうなるかは確定ではないが)長期スパンでみれば拡大するだろう

このように全体的に離婚コストは減っている

欧州の国をみならって結婚制度改革!事実婚権利増進!なんて流れもあるし、すくなくとも今後50年は離婚やすい方向に進むだろう

結局、どこに行き着くのか

なんかどこかで聞いたような話を書いてきたけど

タグ増田 アホ なにをいまさら

「要するに自分利益だけ考えてもダメ、互いが互いを人間として尊重しようってことだろ?俺はそうしてるぜ」☆☆☆

的に一部ブコメ民に総括されそうな気がする。だが、そういう「理想的な結婚」はますます減っていくのではないかと思う

なぜなら、そういう価値観を持った人間は「不利」だからである

「互いを尊重」するには前提として相手に尊重してもらうことが必要だ。離婚に抵抗がなく、自分利益を求める人間ますます増えていくであろうから

そのような理想的な相手とマッチングするのは難しい。仮にうまくいっても、その子供が同じ価値観をもって結婚に臨むとまた同じ難しさがある

こうして考えると、そういう理想をもった人間は淘汰されやすく、「自分利益大事場合によっては即離婚オッケー」派がどんどん増えていく結果となる

ますます「互いを尊重する」結婚は難しく高コストになり、そういった価値観を持つ人間はそもそも結婚をしようとすらしなくなる

こういった流れになるのではないか

ますます結婚して子どもを産む人間は減るだろう

じゃあどうするか

こういう予測のもと、どういった制度変更が可能なのか妄想してみる

ケース1:別に結婚離婚しまくって子供生みまくればよくね?税金とりまくって社会全体で子供育てようぜ?

そもそも結婚維持なんていらんかったんや。子供うまれりゃオッケーオッケー。独身者にもその分課税な

結婚しなきゃ損するシステムを組めばいい。合理的

幸せ結婚じゃなく、利益を求める方向で結婚促進する

人間の性欲はなくならないし、破綻コスト下げまくれば参入者は増える。

実は現実的かも。北欧モデル的?いったん定着すればまず後戻りはしない・できないだろう

ケース2:自由意志による結婚ってのがまず糞だよな。未婚者は国が結婚させよう。遺伝子検査等で相性チェックだ

発想は前時代的だが、なぜかSFチック。まあ今世紀中にはないと思うが

ケース3:アセンションがおき、日本人価値観が変わって、互いを尊重して幸せになる

去年ネット預言者がこういってた。なんでも2012年末にアセンションがくるようですな

あれ?今年って西暦何年だっけか?

ケース4:制度とか変えるのめんどくせえ。ってか、今のままでよくない?幸せ結婚できない奴って自己責任だし、自分利益しか考えてない奴かキモオタだろ

ありそう。人口減少への道のような気がしなくもないが、別にそうなると決まったわけじゃなし

というか人口減少してるのって恋愛してない若者と、キモオタの増加のせいだよね。人類から活力を奪う風俗店アニメエロゲ規制しすれば解決!そもそも日本人たるもの国力増強のため(略

冗談はさておき、先進国で超強烈なポルノ風俗同時規制した場合結婚への影響は気になる。

みなさんはどういう結婚制度を求めますか?

2013-09-02

プログラミング言語の『型』ってさ

元はといえばメモリに入ってる値のフォーマット整数型なのか浮動小数点型なのかってのをメモリの中身をいちいち人間が見て判定するの面倒だから出来たっとことは

メモリの中身を一段階抽象化したってことでしょ?

で、Cの構造体とかオブジェクトのようなユーザー定義の型は

変数の塊に対してどういう操作が可能なのかとか覚えたりするのだるいしできる限り実装も見たくないか

変数抽象化して構造体とかオブジェクトという単位で見るようになったってこと

って感じの理解でいいのかな?

コーディングを支える技術読んでて思った。

この本、プログラミング言語歴史についての記述がたくさん入ってて読み物っぽい感じがするのに、技術的な部分の知識や理解も得られるからすごいお買い得感あるし何より読んでて楽しい

2013-07-21

からNULLの代わりに0を書いてもいいけど、整数の0とNULLポインタの内部表現が同じってわけじゃないの。

まり0と書いたからといって、それが整数のつもりなのかポインタのつもりなのかの意図を、コンパイラに教えないと、C言語仕様的に駄目なの。

2013-06-04

2010年兵庫県教員採用試験高校専門試験 理科生物) 遺伝についての問題

 次の文を読んで、あとの問いに答えなさい。ただし、組み換え価(%)は

小数点第1位を四捨五入して整数で答えなさい。


 ある生物において、遺伝子A、B、Dはそれぞれa, b, dに対して優性であるとする。

遺伝子型がAAABBの個体aabbの個体とを交雑したところ、F1はすべて

〔AB〕であった。続いて、このF1を(①aabbの個体と交雑)したところ、

(②その子には〔AB〕:〔Ab〕:〔aB〕:〔ab〕が6:1:1:6の比で生じた。)

 次に遺伝子型がAAddの個体aaDDの個体とを交雑したところF1

すべて〔AD〕であった。このF1からF2をつくると、

(③〔AD〕:〔Ad〕:〔aD〕:〔ad〕が201:99:99:1の比で生じた。)

ただし、〔  〕は表現型を表すものとする。

1.(  )①のような交雑を何と呼ぶか答えなさい。

2.次の文中の(ア)~(オ)に入る適切な語句や数値を書きなさい。

 上の結果は、メンデルの( ア )の法則にしたがっていない。すなわち、

遺伝子のAとB、aとbはそれぞれ連鎖していることがわかる。ところが、その連鎖

不完全で、減数分裂第( イ )分裂の( ウ )期に、相同染色体間で( エ )が

起こり、その結果として、遺伝子の組み換えが( オ )%の率でおこったと推定することが

できる。

3.(  )②の個体のうち、遺伝子の組み換えによって生じた個体遺伝子型をすべて書きなさい。

4.このF1からF2をつくると、その表現型とその分離比はどのようになるか答えなさい。

5.(  )③より、遺伝子A-d間の組み換え価(%)を求めなさい。

6.別の実験遺伝子B-dの組み換え価を求めると、4%であった。

A,B,D(a,b,d)3つの遺伝子総体的な位置と、相対的な距離を

図示しなさい(遺伝子Aはすでに解答欄に記入してある)。

また、このようにして、遺伝子総体的な位置を知る方法を何というか答えなさい。

2013-03-25

プログラミングの入門

プログラム定義

プログラム:定義づけられた物事を進めていく妥当な手順・方法の決定、および物事・手順・方法記述

プログラミング定義

(コンピューター)プログラミング:コンピューターが進めていく物事を定義し、妥当な手順・方法を決定し、記述すること。

プログラミング = デザイニング union コーディング;

デザイニング:進めていく物事を定義し、妥当な手順・方法を決定すること。

コーディング:コンピューターが進めていく定義づけられた物事の決定された妥当な手順・方法を、記述すること。

プログラミングに関わる人々

PG(プログラマー):プログラミングする人。

CD(コーダー):コーディングする人。プログラマーとは限らない。

SE(システムエンジニア):進めていくべき物事を定義する人。プログラマーとは限らない。

PM(プロジェクト マネージャー):(プログラマー)プログラマー。(コンピューター)プログラマーとは限らない。

日本ソフトウェア業界ではSE定義した物事を、何の工夫も無くそのまま記述するCDという体制となっている。

まり「物事を進めていく手順・方法」が余りにも稚拙で、PGと呼べるSECDが居ない。

※「物事を進めていく手順・方法」の巧拙の例としては、

仕様:「等差数列で、1から10までの整数を加算する」

CD: べた書きかループで 1足す2足す・・・

PG: (初項 + 最終項) x 項数 /2

というように、例えば巧拙の差は「上手い・エレガントな方法アルゴリズム」だったりします。

0.以下のような方はプログラマーに向きません。入門しないでください。

継続的に勉強できない(1週間で最低10時間は、何があっても勉強しましょう)

論文・学術書が読めない。(コードはお堅い理論的に筋道立った文章の極致の一つです)

100ページくらいなら一晩で修得してやろうという気合いが無い(一晩で仕様書読み込んで次の日から活かす必要があったりします)

仕事のやり方に疑問を抱かない(楽するためにはどんな苦労も厭わず、常に最善を考えましょう)

・いつかはマネジメントをしたい(人を使うよりも、プログラム組んで仕事させた方が、安くて速くて正確ですよ)

(笑)マネジメント:下僕に進捗という数字を報告させて、自分の握っている進捗管理という方眼紙のマス目を埋める作業。

自身の雇い主にマス目の埋まり具合を報告する作業。

1.入門者になるために、学んでおくべきこと

※ここで以下の1~4を6ヶ月がんばっても挫折する方は、「一山いくらのコーダー」にしかなれない可能性が高いため、

ソフトウェア業界」自体を諦めた方が良いですね。

しがみついてしまうと、真っ当な技術者の足を引っ張ることになります

逐次実行、条件分岐、反復実行

ポインタ最近情報学科のくせに学部ポインタを教えない大学があり、そういうところは真っ当な大学ではございません。

1)O'REILLYの[amazon:C++実践プログラミング]を最初の「ポインタ」まで読んでください。

2)C++の実行環境をC99で整えてください。(環境の準備は自分で面倒を見てください)

3)ポインタを用いて、文字のLinkedListクラスを実装してください。

※LinkedListとは以下の仕様を満たすクラスします。(C++JavaのLinkedListを実装)

http://docs.oracle.com/javase/jp/6/api/java/util/LinkedList.html

4)LinkedListの入れ子でTree構造をつくり、再帰を用いて、全要素をコンソール出力するプログラムを作ってください。

5)4)をクリア出来た人は、この本を1年以内に全部読んでください。

ただし、C++は複雑怪奇言語のため、これ以降は知識レベルの修得で構いません。

私は中3の時、STLBoostどころかbooleanの無い時にこの本を9ヶ月で読んでおります

※私が面接に出る場合は、当該内容のLinkedListやQuickSortの概要を直ぐさま説明できる人は、可能性有りと○を出します。

ただし、日本ソフトウェア業界は腐っています

面接で「LinkedListを勉強してきました、直ぐさま説明できます」といって、「そんなの出来て当たり前だ」と言ってくれる会社殆どございません。

大抵はポカーンとして意味不明という顔をする文系人事だったり、「そんな技能必要ない」というところが殆どです。

逆に「できて当然」と言ってくれる会社は、技術をしっかり学べる可能性大です。

2.初級者への道

★ここまでクリアした方は、「入門者」と呼んで差し支えございません。次は「初級者」への挑戦です。

プログラミングは入門者になるだけで1年かかる世界です。

内定もらってから勉強して適正無しと自覚すると、地獄ですよ。

※初級者になるためからは、べらぼうに学ぶべきことが広がります

燎原の火のごとく。

※筆者の立場

Joelさんの「Javaスクール危険」に賛同するので、ポインタ優先ということで。

加えて、Javaクラスインスタンスとstatic変数の話を理解するのに、メモリー意識があったほうが楽だと思う派。

2013-03-01

変数に型がないということの利点について俺も考える

http://d.hatena.ne.jp/perlcodesample/20130227/1361928810

たとえ動的型付けでも整数文字列は足せないわけで、結局型がないわけではない。そう言った意味で、動的型付けの恩恵を得るには暗黙の型変換が必要不可欠だ。またダックタピングによって関数適用できる型が静的な言語より広いことが多い。そう考えると動的型付けのパワーは、関数に渡せる値が幅広いおかげで以下の2つの利益があることだと思う。

  • 明示的な型変換を書く必要が少ない
  • 文字列とか基本型を多用するので、型に関して調べたり覚えたりする量が少ない

動的型付けをする言語では、ほとんどのもの文字列や、汎用のリスト型や辞書型のまま表現することが多い。これに対し、静的な型付けをする言語では専用の型をどんどん用意し、それらの型を変換する関数を用意しておく。型が多ければ多いほど、関数は部分関数から全域関数へと近づく。つまり不具合は減る。よって、静的な型付けをする言語で正しく型を設計することで不具合を減らすことができる。

しかし、その分型を明示的に正しく変換する必要がある。IPアドレス型、HTTPヘッダ型、Cookie型、ファイル・・・様々な型をそれぞれ正しい記述で書く必要がある。対して動的な型付けの言語ではこれらを文字列辞書型のまま扱う傾向が強いので、それっぽい文字列やそれっぽい辞書マニュアルなしで組み立てて関数に渡すことができるので、開発工数が低い可能性がある。

もっとも、IDEが優秀であれば型変換する関数を正しく予測してくれるのかもしれない。ので、型変換するコードを瞬時に書ける程度優秀なIDEがあれば不具合が少なくて済む分静的型付けの方がいいし、そういうIDEがないのであれば文字列や基本型だけの知識でどんどん書ける動的型付けに軍配があると言えるんじゃなかろうか。

不具合のあるプログラムでも求められる局面が存在する

不具合のないプログラムを書くのであれば、動的型付けでも静的型付けでも生産性は一緒な気がする。むしろ静的型付けの方が不具合が入り込む余地がもともと少ない分生産性は高くなるだろう。多くの人が認める通り、不具合のあるプログラムを書くことはプロとしてあるまじき行為で、恥じるべきだ。

しかし、不具合のあるプログラムは世の中に存在しえないもので速攻削除すべき、と考えるのは行き過ぎだ。残念ながら現実学問理論世界とは違う。プログラムが以下の条件を満たす場合不具合があってもなくてもいいので、とにかく素早く作ることが求められる。不具合があってもいいのであれば、前述したように少ない知識でも適当に組める動的型付け言語の方が、とりあえず動くまでの期間や人的リソースの調達のしやすさなど、軍配が上がる可能性は高い。不具合のあるプログラムでも許容されるのは以下の場合だ。

3つ目の理由がとにかく大きい。「1日でバグだらけのものを作って動かし始め1ヶ月後にバグをほぼなくす」のと「2週間でほぼバグがないものを作って動かし始める」のとでは、前者の方が金額で言えば後者より倍優れていることになる。バグのある物をお客さんへ提供しているにも関わらず、だ。

もう言わなくても分かると思うが、この条件に当てはまるのがWEBサービスの開発だ。ユーザに多少エラー画面が出ても、ほとんどのユーザはそんなの慣れっこだ。プログラムサーバアップロードすれば簡単に修正できる。そんなWEBサービスださい?恥ずかしい?ああ、そうだ。しかし、そんなこと関係なしに、リリースすれば財布にはお金が入ってくるし、しなければお金は入ってこない。

逆にこれらの条件にあてはまらない開発はたくさんある。医療系や金融系は不具合の損失が重大過ぎる。組み込み系やパッケージ系は、製品を売り初めてしまえば修正は困難だ。

2013-02-01

http://anond.hatelabo.jp/20130201203804

そういうことではない。

小学校算数世界の「掛け算」は整数実数上の通常の意味での積とは異なる演算なんだよ。

整数×単位系」という空間上に定義された演算で、単位系の方に「単一単位からなる単位」(集合Aと書く)と、

「2単位の商単位」(集合Bと書く)が存在して、

A×B->Aという演算しか定義されていない(B×A->Aかもしらんがそこは知らない)のが小学校式。

もちろん、そんなしちめんどくさいことしなくても、単位系の代数構造が通常の数上の積演算構造に従うことを

説明すれば可換性も含めて自明なわけだが、小学校教師の8割くらいは(そのブログの奴と同じように)単純に馬鹿なので

その辺ろくに理解してないし、残りも、特に頭の悪い子に合わせるためにそうしているようだ。

そもそも、国民全員に格安提供される教育クオリティなんてそんなもんだろう

それが嫌な奴らは私立の小学校に行く。馬鹿と関わらないためには金がかかるわけだ…。

2012-11-03

少子化により、学級定数の弾力性・冗長性が失われている

いわゆる「クラスサイズパズル」論争の仕掛け人として、少し補足。

見落とされがちな点であるが、

「40人学級」「35人学級」と文部科学省定義した場合

実際の学級人数が「40人」「35人」ピッタリになるケースは、レアだ。

当たり前だが、クラスの数は整数で、小数にできない。

例えば「2年生人数が71人で、文部科学省の基準だと35人学級」という場合

71÷35=2.03と割り算して「クラス数=2.03」とはならない。

切り上げ処理で「3クラス」となる。

この場合、実際の人数は71÷3=23.7、つまり23人ないし24人のクラスになってしまうことになる。

そして、この点が最も重要なんだが、

「第二次ベビーブーム時代と比べて、学級当たり人数が減少している今では、

 学級定数の弾力性、冗長性が失われている」のである

先述のケースで「2012年時点の2年生は71人」の小学校も、

1979年時点では「2年生は141人」だったかもしれない。

この場合、141÷35=4.02、切り上げて5だから

クラスの人数は141÷5=28.2人、28~29人だ。

28~29人のクラスと、23~24人のクラスでは、大分違う。

要するに、第二次ベビーブーム世代は、学級人数が多数で

「1学年に4~5クラスが当たり前」だったため、

「35で割り切れない人数、中途半端な人数」だった場合でも、

クラス人数編成への影響は最小限に抑えられていたのである

言い方を変えると、人数の多さで以て「冗長性を確保」していたのだ。

しかし、少子化が進んで、1学年1クラスとか2クラスとかが珍しくなくなると、

中途半端な人数だった場合の「クッション」が存在しなくなる。

極端な場合、「1学年36人」だった場合

36÷35=1.03、切り上げて2になって、

人数=36÷2=18になってしまう。

少子化によって、このような「予期せざる少人数学級」が、多数出現してしまうのである

「1学年18人」となると、いわゆる秀才、上位層の厚みも少なくなるだろうし、

競争も起こりづらくなる。

クラスサイズパズルが発生しても、不思議ではない。

マスコミが「40人学級」「35人学級」と報道した際、我々は第二次ベビーブーム時のイメージで、

「実際の編成は、37人だったり、33人だったりする程度だろ?」と思いがちだが、

学年まるごと少子化現象によって、

「運悪く中途半端な人数だと、22人とか、18人とか、想像以上の少人数クラスが出現しかねない」

という点に留意する必要がある。

実は財務省が用意したペーパー

http://www.mof.go.jp/about_mof/councils/fiscal_system_council/sub-of_fiscal_system/proceedings/material/zaiseia241101/04.pdf

の10ページに、「20年前と比較した場合の、実際のクラス人数対比グラフ」が存在していて、

「25人以下学級」出現比率が増えていることが明らかになっている。

2012-09-12

プログラマ採用面接における足切り質問

Joel氏の採用面接ゲリラガイドにもあるように、デキる開発者と一緒に仕事をしたいというのは、開発者なら誰でも思うことだ。

そこで、自分面接する側だったら、初歩の初歩レベル、即ちプロとしてあり得ないレベルの人を足切りするような、くだらない質問を2つ考えてみた。

JavaVB.NETC/C++PHPPerlといったオープン系では広く普及している言語で、ごく普通PCサーバで動作するコードを想定し、実装方法を考えてもらうというもの


  1. 1からnまでの整数を加えるといくつか求める。
  2. ある年が閏年かどうか求める。


ここでポイントとなるのは「プログラムに正解はないが、明らかな間違いはある」という考え方。

まり2つの質問に対して、明らかに間違った回答をしてきた人が失格ということ。

では上の問いで想定している明らかな間違いは・・・


  1. n回ループする処理内でループカウントしている変数を足していく。
  2. 4で割り切れる年は閏年だけど100で割り切れる年は(中略)というロジックを書く。


どっちも教科書でよく見るやり方だけど、仕事でそれやるのは頭悪すぎて話にならないということで。

ちなみにそれぞれの質問で何を見ているか、デキる開発者には一目瞭然だと思うけど、説明すると


  1. シンプルでエレガント()で力強く、高速かつ可読性も高くて(中略)そのためのアルゴリズム・・・という工夫を実装において考えられるか
  2. 誰もが欲しいと思うものは既に用意されているだろうという想像力を発揮してサボれるか


結局、コードを書くときに一番大事なのはそういう能力であって、間違っても努力気合じゃないってこと。

最後に、各質問の正解例を書いてみるとこんな感じ。


  1. n(n+1)/2
  2. 求めたい年の2月29日0時0分0秒をtimelocal()的な関数に放り込んで、結果がエラーだったら閏年じゃない


願わくば、こんなのよりもっと驚くような回答をする人と仕事したいっす。

2012-08-13

C#基礎文法最速マスター

1. 基礎
classの作成

プログラムclass記述します。たとえばSampleという名前classを作る場合、Sample.csファイル内に次のように書きます。(C#場合ファイル名とクラス名は同一でなくても良い。複数のクラスを書いても良い)

public class Sample {

}
Mainメソッドの作成

プログラムclass内のMainメソッドの先頭から実行されます。Mainメソッドは次のように書きます

public class Sample {

    public static void Main( String[] args ) {
         // 処理を書く
     }

}
Console.WriteLineメソッド

文字列を表字するメソッドです。

Console.WriteLine( "Hello world" );
コメント

コメントです。

// 一行コメント

/*
   複数行コメント
 */
変数の宣言

変数の宣言です。変数の宣言時にはデータ型を指定します。

// 変数
int num;
データ型

データ型です。C#データ型には値型と参照型とがあります。以下は値型のデータ型です。

// int(整数)型
int num;
// char(文字)型
char c;
// float(単精度浮動小数点)型
float val;
// double(倍精度浮動小数点)型
double val;
// bool(論理)型
bool flag;
// DateTime(日付)型
DateTime date;

以下は参照型のデータ型です。

// StringString s;
// 配列String[] array;
プログラムのコンパイル

プログラムコンパイルするには、コマンドラインで以下のようにします。

csc Sample.cs
プログラムの実行

プログラムを実行するには、コマンドラインで以下のようにします。

.net framework on Windows場合

Sample.exe

Mono.frameworkの場合

mono ./Sample.exe
2. 数値
数値の表現

int、float、double型の変数に数値を代入できます。int型には整数だけ代入できます。float、double型には整数でも小数でも代入できます

int i = 2;
int i = 100000000;

float num = 1.234f;

double num = 1.234;
四則演算

四則演算です。

num = 1 + 1;
num = 1 - 1;
num = 1 * 2;
num = 1 / 2;

商の求め方です。割る数と割られる数が両方とも整数場合計算結果の小数点以下が切り捨てられます

num = 1 / 2;  // 0

割る数と割られる数のどちらかが小数場合計算結果の小数点以下が切り捨てられません。

num = 1.0 / 2;    // 0.5
num = 1 / 2.0;    // 0.5
num = 1.0 / 2.0;  // 0.5

余りの求め方です。

// 余り
mod = 4 % 2
インクリメントとデクリメント

インクリメントとデクリメントです。

// インクリメント
 ++i;

// デクリメント
 --i;
3. 文字列
文字列の表現

文字列ダブルクォートで囲みます

String str = "abc";
文字列操作

各種文字列操作です。

// 結合
String join = "aaa" + "bbb";

// 分割
String[] record = "aaa,bbb,ccc".Split( "," );

// 長さ
int length = "abcdef".Length();

// 切り出し
"abcd".Substring( 0, 2 )   // abc

// 検索
int result = "abcd".IndexOf( "cd" ) // 見つかった場合はその位置、見つからなかった場合は-1が返る
4. 配列
配列変数の宣言

配列です。

// 配列の宣言
int[] array;
配列の生成

配列の生成です。配列の生成時には要素数を指定するか、初期データを指定します。

int[] array;

// 要素数を指定して配列を生成
array = new int[5];

// 初期データを指定して配列を生成
array = new int[] { 1, 2, 3 };

// 宣言と同時に配列を生成
int[] array2 = new int[5];
配列の要素の参照と代入

配列の要素の参照と代入です。

// 要素の参照
array[0]
array[1]

// 要素の代入
array[0] = 1;
array[1] = 2;
配列の要素数

配列の要素数を取得するには以下のようにします。

array_num = array.Length;
配列のコピー

配列の要素を別の配列コピーするには以下のようにします。

int[] from = new int[] { 1, 2, 3 };
int[] to = new int[5];

from.CopyTo(to, 0);
5. 制御文
if文

if文です。

if ( 条件 )
{

}
if ~ else文

if ~ else文です。

if ( 条件 )
{

}
else
{

}
if ~ else if 文

if ~ else if文です。

if ( 条件 )
{

}
else if ( 条件 )
{

}
while文

while文です。

int i = 0;
while ( i < 5 )
{
    
    // 処理
    
    ++i;
}
for文

for文です。

for ( int i = 0; i < 5; ++i )
{
    // 処理
}
for-each文

for-each文です。配列の各要素を処理できます

int[] fields = new int[] { 1, 2, 3 };

foreach (int field in fields)
{
    // 処理
}
6. メソッド

C#では関数メソッドと言いますメソッドを作るには次のようにします。戻り値を返却するにはreturn文を使います

static int sum( int num1, int num2 )
{
    int total;

    total = num1 + num2;

    return total;
}
9. ファイル入出力

ファイル入出力です。ファイル入出力を行うには、プログラムの先頭に以下を記述します。

using System.IO;

以下がファイル入力の雛形になりますファイルオープンや読み込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamReader reader = null;
try
{
    reader = new StreamReader(filename);

    String line;
    while ((line = reader.ReadLine()) != null)
    {

    }

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (reader != null)
    {
        try
        {
            reader.Close();
        }
        catch (IOException e) { }
    }
}

またはC#ではusing ステートメントと言うものがあり、この様にも書ける

String filename = "text.txt";
using (StreamReader reader = new StreamReader(filename))
{
    try
    {

        String line;
        while ((line = reader.ReadLine()) != null)
        {
            // 読み込んだ行を処理
        }

    }
    catch (IOException e)
    {
        // エラー処理:

    }
}

usingをつかうとCloseがなくなったことからわかるようにusing(){}を抜けるとき自動的にDisposeメソッドを呼び出し、オブジェクトを廃棄する。その分コードスッキリするが、使いにくい場面もあるので考えて使うこと。

以下がファイル出力の雛形になりますファイルオープンや書き込みに失敗した場合catch節に処理が移ります

String filename = "text.txt";
StreamWriter writer = null;

try
{
    writer = new StreamWriter(filename));

    writer.WriteLine("abc");
    writer.WriteLine("def");
    writer.WriteLine("fgh");

}
catch (IOException e)
{
    // エラー処理:

}
finally
{
    if (writer != null)
    {
        writer.Close();
    }
}

こちらもusingを使って書ける。が、割愛する。

知っておいたほうがよい文法

C#でよく出てくる知っておいたほうがよい文法の一覧です。

繰り返し文の途中で抜ける

繰り返し文の途中で抜けるにはbreak文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        break;    // 条件を満たす場合、for文を抜ける。
    }

}
繰り返しの残り部分の処理をスキップする

残りの部分処理をスキップし、次の繰り返しに進むにはcontinue文を使用します。

for ( i = 0; i < 5; ++i ) {

    if ( 条件 ) {
        continue;    // 条件を満たす場合、残りの部分処理をスキップし、次の繰り返しに進む。
    }

}
例外処理

例外を投げるにはthrow文を使用します。

throw new Exception( "Error messsage" );

例外処理をするにはtrycatch文を使用します。

try {

    // 例外が発生する可能性のある処理

} catch ( Exception e ) {

    // 例外発生時の処理

}

2012-06-17

宇宙において美しい構造を実現しようと思ったら整数環についてよく知るように素数判定や素因子分解のアルゴリズムを発展させたり,計算機を開発したり,諸学の発展を素数論に結びつけるようにしていくのがよいではないだろうかと思った.

the dignity of the science itself seems to require that every possible means be explored for the solution of a problem so elegant and so celebrated

ラテン語から英訳

2012-02-05

http://anond.hatelabo.jp/20120205104520

教職員採用については、俗に「定数法」と呼ばれる法律があり、それに基づく各都道府県条例に基づいて、正採用教職員の数は明確に決まってる。具体的には、現行の定数法は1クラスを40人としているので、仮にとある都道府県に40000人の生徒がいたら、クラスの数は1000。そうなると、各クラスには担任副担任2名を置くので、正採用できる教職員の数は2000人ということになる。基準の適用の仕方は色々あるし、小学校の定数は最近若干変わってきているし、他にも自治体独自で作る枠もあるし、一方実際のクラス数はもっと多い(全ての学級の「上限」が40人なのだから、それより数の少ないクラスもある=実際のクラス数は40で割ったより多くなる)が、とにかく、大体そんな感じに「正採用の人数」は決まっている。

で、統廃合のときどうするかだけど、当然「いつ」統廃合するかは決まっているから、計画が決まるあたりから採用調整を行う。子どもの数は出生数から分かるわけだから、将来的にどのくらい学校が必要か不要かはある程度分かっているわけで、それを見越して採用調整を行う。特に、この20年間くらいは、子どもの数の急激な減少期だったりしたから、学校の統廃合も激しく進み、相当の採用調整を行う必要があった。

かといって、雇っている教員のクビをぽんぽん切れるわけではないので、教員の数を減らすには、原則「早期退職」とか「定年による自然減」に拠るしかない。統廃合前にそれをある程度進めないといけないので、たとえばある学校を一つ統廃合する前の年には、その一校分くらいの教員数を減らし終わってる必要がある。だから、大体その前年まで採用数を減らして教員の数を減るに任せる必要がある。だから、前年くらいにはその都道府県の中に(足りない分を補う)期限付き講師があふれるという減少が起こるというわけ。まあ、学校廃校にすると言っても、いきなり全学年が消えるというつぶし方をしなくてもよい。新1年生が入ってこない状況にすれば、教員数は1学年ずつ減らしていくという手もあるから講師による調整数も、せいぜい1学年分ずつということにもできる。それでも、この10年くらいは、複数の学校を一気に統廃合する関係上、さすがに調整きかない分もあるためか、定年後の再雇用枠とか、教育委員会内への出向とか、研修センター研修とか、まあいろいろ無理矢理な調整をする必要があることもあった。

上の増田が書いてる「2クラスに教師が3人」というのは、色々勘違いがあって、そもそも「1クラスに2人」が標準だから、2クラス3人ならむしろ教師が足りないことになる。多分(主たる)担任のことを言ってるのだと思うが、3人の教師が付くのは、学級担任とは別枠の何かとして配当されているという事情によるのであって、「教員が余ってるからぶちこむ」とかそういう事情とは違うと思う(そんな余裕はない)。多分、片方の担任の指導力に不安があるとか体調不安があるとかクラス発達障害の子どもがいるとか、まあそんな事情だろう。

それにしても、期限付き講師は、昔は採用に際し有利になることもあったようだが(逆に、前評判が出回って不利になる人もいたと噂に聞くが)、今は特にそういうことも原則ないと思うので、そうなると本当に、採用試験に受からない限り、使い捨てである。色々と問題は多いと思う。

2011-12-27

http://anond.hatelabo.jp/20111227131118

まり、何がどうわからないのかもわからない状態ということか…。

確かにそれは小学生目線かもしれない。

  • 1皿3個のりんごが5皿分あったら3*5で15個
  • 5皿あって1皿3個ずつりんごを乗せたら5*3で15個

整数の範囲の掛け算の可換性なんてこれが直感で理解できれば十分であって何も間違ってない。

「1皿3個」を単位で書くと「3個/皿」であって、この「単位」も割り算なんか知らなくても直感で理解できる。

指導要領だか教科書だか知らんが、本質を見誤ってマニュアル思考に陥るからこんな簡単なことも分からなくなるんだよ。

2011-07-19

http://anond.hatelabo.jp/20110719212006

a*10 = a*(9+1) = a*9 + a

従ってa={0,1,2,…,8}のとき

a*10 mod 9 = a  …①

a*100 = a*10*10 = a*(9+1)*10 = a*90 + a*10

よって①より、

a*100 mod 9 = a

以下同様に、

a*10^m mod 9 = a  …②

一般に、n桁の整数

a1*10^{n-1} + a2*10^{n-2} + … + an  …(*)

と書ける。②より、これを9で割った余りは

a1 + a2 + … + an

であり、これが9で割り切れるとき整数(*)は9で割り切れる。

これがaiが9の倍数であるときにも成り立つことは自明である

証明終わり

2011-07-15

facebookイイネ!ボタン

 facebookにはイイネ!ボタンなるものが付いていて、これはその内容に賛同できるもしくは気に入ったものに対しての意思表示をして、自分以外の友達にもそれを知ってもらうものである

 ある記事等に対してはそれまでにいいねボタンが押された人数が常にカウントされていて、その範囲は0~∞(多数の正の整数)となる。

 しかし、実際の人間の心理としては、全く感心のない0からとても賛同できる多数の+以外にも、全く賛同できない否定的な-方向の意見存在するはずである。ところが、facebookにはよくないねボタンなどはないのだから、いいねボタンの押された回数と実際に見た人の意見は一致しないのである

 したがって、0やそれに近い記事は否定的な意見が多く存在する可能性が高く、平均点は少ない数字の正の数となるはずである

2011-06-30

http://anond.hatelabo.jp/20110630110148

明らかに一番ムズイのは整数離散数学)だろ。

これは数学一般で言ってもだいたいそう。

離散数学に比べたら解析(微分積分)なんて簡単。

高校レベルならなおさら。

高校数学で難しいところ

難しい

意外と難しい

比較的簡単

簡単

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