「階乗」を含む日記 RSS

はてなキーワード: 階乗とは

2023-12-02

わし「サイコロを1回振ったとき、1が出る確率は?2は?3は?」

確率「どれも1/6や。均等やで」

わし「ほな、サイコロを6回振ったとき、1~6が全て1回ずつ出る確率は?」

確率「6の階乗を6の6乗で割るとな、1.5%くらいやwwwひっくwww」

わし「確率!てめぇ!!!

松戸弁慶「何事でごわすか」

ほんと確率ってクソすぎん?

2022-12-23

プログラミング、思ってたんと違う。

なんか、楽する為のツールのはずが。

二分探索を組みましょうとか、マージソートヒープソートとか。ややこしい。原理は、分からんでもないけど。

いざ、自分で組むとなると覚えてないとダメなんでしょ?

ヤフー知恵袋で、階乗問題を稀に良く見かけていたが、あれは再帰勉強させたいという意図があったんだと、やっと気がついた。

エクセルショートカット時短とか、マークダウン記法HTMLがかけるとかとは、雲泥の差。

ググって、先人の知恵を利用しようにも、ちょっとー大変じゃーん。

(例えば、文系的なその文系の中でも、厳密な思考必要とする法学的な論理的思考とは別物だろうなぁ。)

2022-08-27

バカエンジニアをはじく面接問題集

ここまでで70%が落ちる

ここまででさらに70%が落ちる

残りの9%にやっとまともな問題を出すことができる

2022-01-08

昔「とらドラ!」というライトノベルがあった。その巻番号の振り方が不思議だった

1巻目は「とらドラ!」で問題なかったのだが、2巻目は「とらドラ2!」で、当時から私には「タイトル名の間に巻番号付けるの?どうしてそこにビックリマーク付けるの??」って感じだった。

とらドラ!2」(タイトル名の後ろに巻番号)ではなぜダメだったのだろう。アニメ化されて10年以上経った今でも、深く疑問に思っている。

そして、「とらドラ!」は最終的には10巻まで刊行されたので、最終巻は「とらドラ10!」という名称だった。

ところで、数学には階乗という概念がある。例えば、「5の階乗」と言えば5から1までの整数を掛け算した値のことで、5×4×3×2×1=120となる。

そして、その階乗は数式で表す際、ビックリマークが用いられる。つまり、「5の階乗」は「5!」と表現する。

とすると、「10!」は「10階乗」という意味であり、計算すると10×9×8×7×6×5×4×3×2×1=3628800である

よって、「とらドラ10!」とは「とらドラ3628800」と同じ意味なのだ

これはすごいことだ。ライトノベル史上、最大の巻番号だと思われる。おそらく現在でも、それを抜く作品は無いだろう。

2020-07-25

階乗マークてなんで!なんや

なんか他にあったやろ。

1と紛らわしいし。

2017-11-24

階乗計算

再帰で求める説明ネット上に多いのですが、

ForLoopで回せば簡単に求められるのに、

なぜ再帰計算する必要があるのでしょうか。

初心者なのでよくわから

誰か教えてください。

2014-06-18

大学生の間に私は成長したのだろうか。

大学生の間に私は成長したのだろうか。


生まれときから世界には完璧という概念存在しており
人間人間であることを放棄しない限り、人間は成長することはないと思っていたので
成長という表現を聞いたとき不快感がずっと存在しておりました。


私の頭の中は、相対評価ではなくて絶対評価であっても、小学生ときがピークでして
それから10年以上、ずっと退化するのに耐え抜くだけの時間を過ごしました。


中学受験塾という環境で過ごして、中学受験しました。

入学した学校は、とある物差しでは関西で5番目くらいの学校
希学園偏差値表で、灘が63、東大寺が61、甲陽が59、洛南(併願)が58、大阪星光が55
(当時は西大和は52、今はもう少し大きな数字だと思います)(女子神戸女学院が54)

星光の入試配点は国語120数学120理科80社会80の(傾斜)配点で、合格最低点は7割
7割というのは高い方(6割が平均的)で、得意不得意が日本一レベルだった私には無駄な難関でしかない。

母数のレベルが低いテストによる合否判定は、得意不得意が異常な私は生涯を通して最高でもE判定しか出ないシステムであり
私は当時からその仕組みが理解できたけど、まわりにいた無能たちはそれすらも理解できなくて話が通じることはありませんでした。

そしてその成績の私には、言及するには心理的抵抗が大きかったのですが、灘や甲陽の配点は国語200算数200理科100で合格最低は6割
私の心の奥底には、星光よりも灘の方が簡単ではないのか(妥協して甲陽)と思ったこともあったのですが
灘も甲陽も兵庫県で、非常に残念なことに星光は家の近所にあるという環境の違いもあったりしまして。

当時の私のテストの答案はいつも同じでして
算数は冒頭から順番にすべて正解、一番最後問題時間切れ。テストは毎週ありましたが、計算ミスもしないのですべてがその結果になります社会も冒頭から比較的には正解率が高かったのですが、正解に自信が持てないので非常に時間がかかり、100点中後半50点ほどは常に白紙での提出でした。
理科物理化学算数に同じ。生物地学は興味がなかったので社会と同じ。
国語文章問題2題が多くて、いつも片方しか読む時間がありませんでした。そして常にクラス最下位。塾全体の公開テストでも下から数人目。
公開テストは600人ほど受けていて、上から10位までは名前が公開されます。(科目ごと+3科目合計+4科目合計)
当時4科目合計で名前が載ってた人は、国際科学オリンピックメダルをとっていたり、当然のように東大医学部に行ったことまでは把握しています。
そして名前が載るのは「S1クラス」という能力クラスでの1番目のクラスばかりになるのですが、
算数時間が足りたことがあって、そのときに「H1」という平均以下のクラス所属で私の名前が載ったことがあります。

すごくどうでもいいですが、能力クラスでは定期的にクラス替えが行われるのですが、私の成績が算数クラストップ、国語クラスビリで安定していて
「H1」という所属クラスってふつうは変動するのですが、なぜか入塾時から小6の途中まですべてH1のままで動くことがありませんでした。
小5までは谷町九丁目教室ではS1からS5とH1からH3、小6からはS0からS8とH1からH6でした。つまりH1っていうのは偏差値では50以下です。
なので志望校として決定されるのは星光になるわけですね。また星光合格者の中では、私が一番下のクラス所属でした。





自分記憶力が残念なので想定外に長くなりました。。。。。。。。。。。。。。。。。。。

さて、小6の3月から2年間にもなる長期間虐待の日々がはじまりました。

その結果、定期テストの前に、勉強するということもしたことがありません。

中3の時の、通知表の成績は、高校への内部進学の基準になります。

全科目の平均が60点が条件で、テストの点数そのままが通知表の点数になる科目もありますが、
平常点を用意したり、救済措置を用意して下駄を大量に用意すう教師もいます。

学年人数は200人で、毎年学校を追い出されるのは10人とか。他の学校よりも多いと思います中学受験での話を想定外に長く書いたので、少しここは省略します。


日本語を話してくれない教師への反発もあって、中3での通知表成績はビリから2番目の人(50よりは上)よりも10点くらい下です。

T野(体罰数学教師)の数学で、一番はじめて満点を達成したのは、M君ではなくて私だったりします。
名前が汚いからという減点は毎回受けていましたが。

英語のS水(中1中2での担任)も相当無能ゴミだったし、
国語の学年主任(中3での担任)もゴミだった。愛のかけらなどどこにもなかった。


テストのために勉強する、という行為はしたことがなかったですが、テスト最中中学受験時代での私の哲学をただただ耐え抜く日々でした。


そして、私の中には中学受験での自己評価をもとにした学力観というものがありまして

勉強したと言えるような時間は、授業中に教師が答える前に自分脳内で答える予習的学習テスト時間中における、問題作成者との、問題を通したコミュニケーション、その2つだけ。

私は私自身の美しい過去尊敬しており、またそう言えるためだけに命をかけております。


信じるかどうかは好きにすればいいと思いますが、勉強したと言えるような時間は上記以外には特にないまま
高校入試受験するみたいでした。(受け身)


甲陽の高校入試の配点は英語200数学200国語200理科150で、合格最低点は脅威の5割。
西大和高校入試の配点は忘れました5科目で、合格最低点は7割。

西大和高校入試数学レベルが高くても小6レベル以下の問題でびっくりしました。(過去問とかも知らない)計算用紙にポエムを書きました。(計算用紙も提出です)
そういえば、テスト最中にはテストに向かい続けるという呪縛を本当に無駄に守り耐えてきたのですが
さすがにあれなので、問題用紙に脳内ポエムを絞り出す習慣が発生していました。
私の問題用紙に書かれた脳内ポエムの絞り出し、見たことある人いるでしょうか。
その一部は高校時代にやっていたブログに模写投稿されていたりします。


といいますか、私は言葉から行動に移すような経験が一切ないと思います国語という科目が全くわからなくて、表現能力障害者しかないのです。

表現というものに、全く価値を感じる機会が今までずっとなかったのです。
(相手の意思とは関係ない)教えてくれる人間自分視点環境には存在しなかったってことです。


この世に信頼できる人間が1人もいなかった。
そうすれば、こうなります存在する存在空間の、表面結果が表現されるだけで、それだけでしょ。


伝えたいと本気で思える人間が私の前に現れることがなかった。



脱線しましたけど、西大和不合格になりました。人生初の不合格です。計算用紙になんだこの数学はアホかやるきあんのか、って書いたのが相手を激怒させたのかもしれません。

入試の科目で満点とれてるのは西大和数学人生初だと思う。(大学入試では同志社物理センター物理が満点。センター物理って小学生でもry)
(大学入試数学は私は全く訓練がされてないので、同志社レベルでさえ時間足りないです)

そして、甲陽おちた場合、出願は2校しかしていないので、いく高校がないです。

けど合格してた。勉強して合格したわけではないので、何も感じなかった。

自分人生他人事で、どうでもよかった。





人は過去を美化するという表現を見かけることがあります。

この表現意図はこうです。

そんなわけがない、人間なめるな。しかしすべてを説明するのは一生かけてもできない膨大さ。情報努力して絞り、本質的情報を簡略に表現する意図がある。

人間人間であるための努力だ。

そして過去存在しない人たちから言及をそらし、内心ほくそ笑むための表現です。


人間であることを放棄した人が、人間舐めるな。

人間は、人間人間だと信じている人たちだけで暮らせばいいです。(そう信じることしかできないんです。)





脱線の方が長くなってしまいました。ごめんなさい。



高校。高3で人生で初めて、通知表に0がつきました。

英語定期テストで選択問題が初めて0問で、(授業でやった)東大京大等の英訳和訳問題のみだったのです。がんばったけど0点でした。


けど留年とかされても高校にとって迷惑になるので、卒業という形で平和に追い出されました。

中学では宿題をだす教師はいて、平常点が存在しました。
高校では宿題をだす教師はおらず、自分勉強する人たちが自分意志医学部とかにいってた。



東工大大学入試の配点は理数系が68パーセントで、合格最低点は忘れました。(ふつう東大生であれば英語国語0点にしても東工大には合格する程度の合格最低点です)
ちなみに早稲田理工は理数系67パーセント慶応理工は70パーセントです


センター試験本番は現役時が47パーセントで、物理に関しても波長って何?λってなんてよむの?らむだってなに?って思いながら知恵とセンスを絞って問題に正解してました。

浪人した時は、波長とはなにか、λがらむだってよむんだって知りました。

一切の本も読まずに、微分とか極限の解釈でただ単に考え事をしていたら、テイラー展開って表現されているもの発見されました。

数学自分問題をつくって遊ぶことしかしてなくて、浪人時代の1月も2月も一回も過去問とかやらずに

自分問題つくっては遊んでました。

(1)30!の一の位は0である。ここから始めて十の位百の位と順に左に見ていく。最初に0でない数字が現れるまでに連続していくつの0が並ぶか。
(2)(1)において最初に現れる0でない数字を求めよ。
(3)ここで「n!は10^kの倍数である」これをみたす自然数kのうち最大のものをpとしてf(n)=10^pとする。このとき以下の数の一の位の数字を求めよ。
(イ)100!÷f(100)
(ロ)100000!÷f(100000)
(4)100兆の階乗10進法で表示したときから数えて25兆番目にある数字偶数である奇数であるか調べよ。
問題を読んでほしいためこのようにしてみた
→方法論は省略して
100兆(10進法)=101101400兆(5進法)
100兆!÷10^(25兆-2)≡2^(25兆-2)×4!1!1!1!1!≡6
…□6が4の倍数なので□は奇数です



普通電卓を使用して
2の常用対数小数10位の値を求めよ。


とかに関しては、あるごりずむかいうやつっぽい。



AA>Bと同値はA>√BまたはA<-√BまたはB<0(A実数)または-√(-B)<Ai<√(-B)である。ではAA<Bは?


とかに関してはすうがくっぽい。





大学に入ってからも痛感しますが、勉強したことがないので、勉強のやりかたが全くわからない。


環境というものは目には見えない力なのです。



クソみたいな社会に適合してたまるか、という環境も世の中には存在します。

社会に適合化された言葉を使ってしまうのは屈辱でもあります。




なにが世界破綻させているのか。それは現実主義者存在です。

「数学に対する価値観は、誤答を解答として提出したのであれば死刑にすべき」

の意図している意識共通認識となれば、世界平和になるのではないかと思います共通認識共通認識における努力さえあれば、別に死刑にする必要はないです。






いつかきっと、人類が私の意図理解することができればいいなって。


おなかがすきましたね。




http://anond.hatelabo.jp/20140617174318



2013-10-16

http://anond.hatelabo.jp/20131016134527

まあ「コンテクスト」の階乗定義してから言ってくれそういうことは

それこそコンテクストで理解できるよね普通

http://anond.hatelabo.jp/20131016134819

おい・・・変数階乗はかなり一般的だぞ・・・

つか 変数階乗適用できなかったら 公式をどうやって書くんだよ しかも nは N つまり 一般的には 自然数のことだ

プログラム風に書くために小文字にしといたのがまずかったか

自分で言っといてなんだが、 ヲイ!

 

なんか、小ボケからの のりつっこみ すべきところだが、 頭が数学になっててできなかた ごめんな。

http://anond.hatelabo.jp/20131016134032

いやまぁ 例は違うけど

n!=m

とかかれても 等しくないのか n (!=)m なのか、 階乗したものに等しいのか n! (=) m なのか

わからんしというのと同じで、いきなり言われてもわからんだろ。

 

大抵の場合 ミスコミュニケーションは 

1 知らない

2 違うものを思いついているのか

3 それとも、聞いたほうが複数のものを思いついて、特定できないか

に分類されるんだが 1としか思われないことがまず ミスコミュニケーションから

 

言い方を変えれば、相手が1つしか思いつかず、自分と同じものを思いつくように言うのがコミュニケーションなんだが・・・なぜか、聞いた方のせいにされて辛い。

2012-05-02

http://anond.hatelabo.jp/20120502154342

単にミスリードを狙ってるだけだからねえ。数学の知識云々というより、とんちレベル

実際発音するときは「4の階乗」なわけで、それなら勘違いしようがない。

なんであんなに騒がれてるのか俺もよくわからない。

http://anond.hatelabo.jp/20120502154342

あれは「理解できない」じゃなくて「思いつかない」というネタじゃないの。

説明されれば分かるけど、パッと見で階乗は思いつけないよね。

俺のigoogle検索ランキングでここ数日階乗ネタコピペ関係のワードが上位入りしてるわけだが

そんなに難しい話、あるいは分からない話だったのかね、階乗って。

もしかしてPとかCとか二項定理とか円順列とか習わない人って多いのかな。

2012-01-18

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

 

42 : デフォルト名無しさん : 2011/11/12(土) 23:53:51.20

Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ

端末からテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに

PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?

けどまぁ、情弱文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか

45 : デフォルト名無しさん : 2011/11/13(日) 01:41:24.25

数値計算や端末からテキスト処理なんてWeb系じゃ大して使わないからなあ…

43 : デフォルト名無しさん : 2011/11/13(日) 00:04:23.30

PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ

Pythonに関しては、ZopeさえコケていなければWebサーバLLとして大成功していたはずなのに、

Railsなんかが登場したおかげで、すっかり影が薄くなってしまますた....

44 : デフォルト名無しさん : 2011/11/13(日) 00:49:55.28

zopeってコケてたんだ

ってか、railsインスパイアされたフレームワークって今じゃ幾らでもあるよね

djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、

pythonPHPの方がユーザー数は圧倒的に多いと思うんだけど

本家railsって、他を遥かに越えるほど良いものなんだっけ?

48 : デフォルト名無しさん : 2011/11/13(日) 08:30:25.68

44

Zopeが登場した当時、RDB+PHPはもう古い、これからOODB+ZopeWebの中軸になる!」

さかんに宣伝され、雑誌でもZope特集が組まれていた

 

少なくとも自分ZopeからPythonという言語を知ったし、その時点でRubyは知らなかった

そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう

今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

 

djangoCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう

しかしRailsはRailsコミュニティの活動が活発だし、その進化は異常に早い

 

Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoCakePHPから

何かのイノベーションが提示されでもされない限り、後発のdjangoCakePHPRailsに追いつくのは無理

Railsは決して技術的に完璧Webフレームワークではないんだけどね....(たとえばSeaSideのような.... )

 

からこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている

51 : デフォルト名無しさん : 2011/11/13(日) 12:55:40.83

 C a k e P H P は う ん こ   

遅い、設計が古い、動作がおかしいの3重苦

日本では流行ってないけど海外だとYiiが流行ってきてる

55 : デフォルト名無しさん : 2011/11/13(日) 17:31:12.14

CakePHP使ってんの?

可哀そうにw

53 : デフォルト名無しさん : 2011/11/13(日) 14:44:48.55

求人PHPばかりだからPHPやるしかないだろ。

57 : デフォルト名無しさん : 2011/11/13(日) 19:34:04.95

でもやっぱりいつもの使い慣れたLL(Python/Ruby)で

Webサービスを書きたいってのがある

73 : デフォルト名無しさん : 2011/11/15(火) 17:32:46.07

アメリカ言語ユーザー数は

Python>>>>>>>>Ruby

求人数は

Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=

どういうことなの?

74 : デフォルト名無しさん : 2011/11/15(火) 17:48:15.59

RubyRails以外に使い道がないか

75 : デフォルト名無しさん : 2011/11/15(火) 17:54:35.50

海外ではRubyは昨今のRailsバブルのお陰で

もはやWebスタートアップ共通語になってるらしいからね

求人数が多いのはそのためだと思うよ

76 : デフォルト名無しさん : 2011/11/15(火) 18:03:23.05

なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・

Pythonのほうが使いやすいと思うのだがフレームワークRailsが優位なんだろうか

77 : デフォルト名無しさん : 2011/11/15(火) 18:23:14.33

Djangoは周辺ライブラリ微妙だし本体も鈍くさい感じがする。

でも、FlaskはSinatraより好きだからPythonが嫌いってわけではない。むしろ好き。

 

ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。

78 : デフォルト名無しさん : 2011/11/15(火) 18:38:46.28

同感だ

同じように思っている人が他にもいて安心した

79 : デフォルト名無しさん : 2011/11/15(火) 18:54:37.13

PHPJavaScalaには

Railsみたいなフレームワークあるのに

Pythonはいいのないんだよな

80 : デフォルト名無しさん : 2011/11/15(火) 21:19:09.89

PHPフレームワークが乱立しすぎているから、RailsPHPで実装してみようというやつが出てきた。

Scalaも注目されだしたのはつい最近のことだしな。

それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、

つの間にかフェードアウト

ただ、どうやってもRailsもどきRailsを超えることはできないのは間違いない。

83 : デフォルト名無しさん : 2011/11/15(火) 21:25:38.55

パクリオリジナルを超えられない(キリッ って定型句だけど、

これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから

84 : デフォルト名無しさん : 2011/11/15(火) 21:30:04.39

D言語って超えたって?

85 : デフォルト名無しさん : 2011/11/15(火) 21:31:12.00

B言語って超えたって?

86 : デフォルト名無しさん : 2011/11/15(火) 21:53:33.76

でもRailsRubyの黒魔術を使いまくりから

PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない

90 : デフォルト名無しさん : 2011/11/15(火) 22:50:07.81

スタートアップなんて根無し草の集まりにとって、

googleが囲った言語coolさを見出せないんだろ

123 : デフォルト名無しさん : 2011/11/20(日) 11:32:16.79

まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ

91 : デフォルト名無しさん : 2011/11/15(火) 22:52:42.98

そういう理由じゃなくてRailsのほうが単純に情報プラグインも多いからでしょ

3 : デフォルト名無しさん : 2011/11/15(火) 23:07:07.67

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

わざわざ不合理で不完全な言語を使うなんて

社会からハミ出た奴らの精神的な作用によるものじゃないの?

95 : デフォルト名無しさん : 2011/11/15(火) 23:20:20.21

django情報プラグインが増えないという、

現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

真実であるのなら、今頃はdjango情報プラグインが溢れかえっているはず

104 : デフォルト名無しさん : 2011/11/16(水) 01:20:49.05

Python信者乙。

yumや、gdbgnome拡張pythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。

ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。

94 : デフォルト名無しさん : 2011/11/15(火) 23:15:11.93

というか、世界中Pythonプログラマが Remeber Zope!! を合い言葉

打倒RailsたるWebフレームワークを開発しているはずだけど、

いまだにRailsを超えるプロダクトが登場しないのはナゼ?

Railsも登場してから、かなりの年月が経過しているんだけどなぁ....

その間にもRailsRails 3が登場して、REST/AJAXの強化等の進化継続しているよ

347 : デフォルト名無しさん : 2011/12/09(金) 10:16:35.22

Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):

.....

map(mapper, ary)

書き換える必要があります

348 : デフォルト名無しさん : 2011/12/09(金) 10:24:20.94

Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから

andやorを使った不自然記述をしなくても

f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}

または

f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}

と書けます。lambda内でreturnが使えますから、書きたければ

f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}

でもOKです。

390 : デフォルト名無しさん : 2011/12/10(土) 15:35:41.62

348

これはPythondisっているように見せかけてRubydisっているのか? と一瞬思ってしまったw

だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…

そしてどっちもlambda式の中で束縛変数名前再帰可能、と

350 : デフォルト名無しさん : 2011/12/09(金) 11:12:13.28

要素に対する関数適用と、抽出を組み合わせる場合

Python

print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]

暗号のように見える。

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

思考の流れと、コードの流れが一致しているので書きやすい。

351 : デフォルト名無しさん : 2011/12/09(金) 11:22:55.04

だれだPythonなら書き方はひとつとか言ってるのは

map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))

354 : デフォルト名無しさん : 2011/12/09(金) 12:22:07.37

pythonて可読性が高いのをうたってる割にはそこいまいちだよね

353 : デフォルト名無しさん : 2011/12/09(金) 12:10:08.46

Ruby場合には、左から右へと無名関数データフローあるいは

パイプラインのように並ぶからコードが読みやすい

 

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコード自然に書ける

プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

 

それと比較すると、Pythonコードは、関数型プログラミングというもの

いかに高度で難解なものであるかという事をもったいぶってプログラマ押し付け

 

もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう

356 : デフォルト名無しさん : 2011/12/09(金) 12:53:45.66

階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|

  x = foo(elem.x)  # ここが局所宣言を書く部分

  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる

}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから

x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける

このポイントは、実用的なプログラム関数型風で書こうとした時に、威力を発揮する

357 : デフォルト名無しさん : 2011/12/09(金) 12:59:21.07

余計分かりづらくなった

358 : デフォルト名無しさん : 2011/12/09(金) 13:17:26.54

リスト内包表記が暗号みたいと言ってる奴は

高卒ドカタなんだろうなぁと可哀想になる

大学数学に触れる機会があれば

集合の表記に似せてることが分かるから

386 : デフォルト名無しさん : 2011/12/10(土) 01:41:34.46

数学とかで慣れてるし区切りが関数のがわかりやすい

359 : デフォルト名無しさん : 2011/12/09(金) 13:46:31.97

355

map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね

Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ

360 : デフォルト名無しさん : 2011/12/09(金) 13:53:28.85

Rubyだと直感的に書けるコード

[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくい。

'-'.join(map(str, reversed(sorted([1,4,3,2]))))

361 : デフォルト名無しさん : 2011/12/09(金) 14:07:17.88

360

Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....

364 : デフォルト名無しさん : 2011/12/09(金) 14:28:55.99

カッコだらけのコードを分かりやすくする基本的な方法静的単一代入じゃないか

Rubyのやり方は基本ではなく玄人のやり方だろ

372 : 369 : 2011/12/09(金) 16:21:03.82

Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、

似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。

シーケンスプロトコルの利点が活かせない。

383 : デフォルト名無しさん : 2011/12/10(土) 01:17:28.39

372

外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてます

Rubyユーザーは列挙可能なものmapselectできて当然だろって思ってる気がしま

377 : デフォルト名無しさん : 2011/12/09(金) 18:41:51.79

Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる

得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない

Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い

379 : デフォルト名無しさん : 2011/12/09(金) 18:48:52.27

Pythonユーザー調教っぷりは異常

「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く

387 : デフォルト名無しさん : 2011/12/10(土) 13:40:40.74

リストの内包表記はシンプルに書けるときは使うけど

基本その場でdefするのがPython風なんだと思う。

389 : デフォルト名無しさん : 2011/12/10(土) 14:40:31.04

無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像

384 : デフォルト名無しさん : 2011/12/10(土) 01:23:49.48

outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる

日本語文に慣れているからだと思うが、

もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?

385 : デフォルト名無しさん : 2011/12/10(土) 01:34:57.89

なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね

F#パイプライン演算子最高ということで

2011-01-09

http://anond.hatelabo.jp/20110109113929

階乗と冪乗の区別がつかない男の人って・・・

64

64という数字の並びは素晴らしい。十進数として解釈すると2の階乗だし十六進数として解釈すると十進数で100になるから

2010-05-21

http://anond.hatelabo.jp/20100521003404

うん。できない。末尾再帰最適化ができる形式の階乗は、

n! = fact_iter(n,1)

fact_iter(0, acc) = acc
fact_iter(n, acc) = fact_iter(n-1, acc*n)

だ。

schemeで書くなら

(define (fact n)
  (define (iter n acc)
    (if (= n 0) acc (iter (- n 1) (* n acc))))
  (iter n 1))

だな。

そのへん興味あるならSICP読むといいよ。

あれ?

階乗計算

n! =

n * (n-1)! (n>0の場合)

1 (n=0の場合

をそのままプログラムにしたら末尾再帰最適化はできないよな?

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