Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

42 Piscine Examを読み解く 印象、考察、そして余談。

42 Piscine Examを読み解く 印象、考察、そして余談。

4週間のPiscineにおいて、毎週金曜日は試験日のようだ。最初の三週間は各4時間のExam 00~02、最終金曜日は8時間のFinalということらしい。

他の投稿で参照しているようなPDF資料を見つけることはできないかと探索してみたものの、信頼できそうなものは見つからなかった。フランス語版の英訳らしきPDFファイルは、文章は英文だが、出力例の部分がフランス語のままであったり、また検索にヒットする情報のほとんどはASCIIファイルで、むしろPDFの方が信憑性が疑わしくなる。
それら、見つかったASCIIファイルはレベルごとのフォルダに整理されている場合がほとんどで、何らかのトレース(採点結果?)を伴う場合が多く、こちらの情報の方が信頼性が高いのではないかと判断した。

今回のまとめでは、これら数々のASCIIファイル、並びにそれらが格納されているフォルダにまとめられた情報に基づいて、印象的だった部分を紹介する。
ここで紹介する情報が東京校のPiscineに通用する保証はなく、内容の正しさを保証するものでもないことを申し添えておく。Piscine資料に記載されている如く、Piscineに伴う噂がまた一つ増えた、程度に受け取ってもらえればと思う。

• Only this page will serve as reference; do not trust rumors.
Watch out! This document could potentially change up to an hour before submission.

  • 注意
  • 問題と難易度
  • 考察
  • 余談
  • 参照
    • diff
    • Success/Failure
続きを読む

SR-G7000M 電子辞書

f:id:espio999:20200110135652j:plain
これは2008年に投稿したエントリーに加筆、修正の上、以前のブログから引き継いだものです。

先月末まで、ある資格試験の勉強をしていた。資料からテストまで、すべて英語だ。PCが手元にない状況での勉強では、辞書の必要性を痛感させられた。そこで電子辞書の購入を検討することにした。

購入したのはSIIセイコーインスツル)のSR-G7000Mというモデルだ。なぜ今まで使わなかったか、というほど、その便利さを痛感している。
スマートフォン+インターネット・サービスで単語の意味や、英文の翻訳を簡単に知ることができる時代になったとはいえ、ただ答えを得るだけではなく、理解を深めるための知見が得られるのは辞書ならではの利点だ。

  • 余談
  • 各種辞書
    • 英和辞典
    • 英英辞典
    • 技術翻訳
  • 参照
続きを読む

神様はつらい(『世界SF全集24』より) あるいは映画『神々のたそがれ』

神々のたそがれ アレクセイ・ゲルマン監督 Blu-ray 特典ディスク(メイキングドキュメンタリー)付属!
『神様はつらい』は旧ソ連のSF作家、ストルガツキー兄弟による、1964年の作品だ。1970年に出版された『世界SF全集24』に収録されている。2013年に『神々のたそがれ』として映画化され、2015年に日本でも公開された。

SF小説を含む、娯楽小説の中に異世界転生と呼ばれるジャンルがある。現代の主人公が、文明的に劣った世界(それは中世をイメージしたファンタジー世界が主であるようだ)で活躍する。あるいはタイム・トラベルものでも、それに通じる作品がある。
それらの作品では、主人公が持ち込んだ知識、技術、道具を用いて、舞台世界で活躍する。舞台世界は、現代に比して文明的に遅れた世界なので、主人公は相対的に強者となる、場合によっては事実上、神の如き存在となる。

その場にはあり得ない力を駆使して活躍するということは、その世界への干渉ともみなせる。神の如き存在ともなれば、その干渉は最低限、むしろ干渉すべきではない。それは異世界が本来歩むべき進歩への干渉になり得るからだ。『神様はつらい』の主題がこれだ。主人公は「神様」として苦悩することになる。

続きを読む

42 SILICON VALLEY Piscine 2017 Rush01(後編) 「難しい」数独を解くプログラム

42 SILICON VALLEY Piscine 2017にはRushと呼ばれるグループ・プロジェクトが含まれている。3つの課題のうちの一つが、数独ナンプレ)を解くプログラムの作成だった。

分からなければインターネット検索し、それでも分からなければ人に聞け、というのが42の学習スタンスだ。数独の解析プログラムの実装は、私にとってはそれを追体験するための格好の題材だった。予定のない正月三が日に集中して取り組んでみた。
1月1日の朝6時に着手し、「簡単な」数独を解けるまでの実装に、2日の午後までを要した。「難しい」数独を解けるまでの実装が完了したのが、3日の14時ごろだった。

今回はいつもとは異なり、プログラムを紹介することを目的とした投稿ではない。サンプル・コードを掲載しているとはいえ、主に紹介するのは、数独が解けるまでの実装についての記録だ。海外Piscine受講者が日々の活動をブログへを投稿している。それと同じような雰囲気を意識している。

前回、「簡単な」数独が解けるまでの記録を投稿した。今回は「難しい」数独が解けるまでの記録だ。前回の投稿を前提として記述しており、必要とされる説明の一部には、前回の投稿でだけ言及しているものがある。読み進める前に、前回の投稿に目を通してほしい。

今回は、一から自分で考えた結果ではなく、とあるサイトの情報を参考に、自分なりに実装した結果をまとめている。サンプル・コードは私が書いたもので、参照サイトのものとは大きく異なるのだが、基本的なロジックは一緒だ。
いつも通り、サンプル・コードはPythonで記述した。Piscine受講生に配慮して、C言語的な記述になるよう配慮しているが、いつも以上に読みにくいのではないかと思う。理由は前回説明した。

  • 準備
  • 適切なロジックを理解する。
  • 写経-ロジックを理解し、書き直す。繰り返して理解を深める。
  • ハマり処
  • 実行結果
  • 参照
  • テスト結果
    • Piscine掲載の問題
    • grid1指定の問題
    • 難問
  • サンプル・コード
続きを読む

42 SILICON VALLEY Piscine 2017 Rush01(前編) 「簡単な」数独を解くプログラム

42 SILICON VALLEY Piscine 2017にはRushと呼ばれるグループ・プロジェクトが含まれている。3つの課題のうちの一つが、数独ナンプレ)を解くプログラムの作成だった。

分からなければインターネット検索し、それでも分からなければ人に聞け、というのが42の学習スタンスだ。数独の解析プログラムの実装は、私にとってはそれを追体験するための格好の題材だった。予定のない正月三が日に集中して取り組んでみた。
1月1日の朝6時に着手し、「簡単な」数独を解けるまでの実装に、2日の午後までを要した。「難しい」数独を解けるまでの実装が完了したのが、3日の14時ごろだった。

今回はいつもとは異なり、プログラムを説明することを目的とした投稿ではない。私の作成したサンプル・コードを掲載しているとはいえ、主に紹介するのは、数独が解けるまでの実装についての記録だ。海外Piscine受講者が日々の活動をブログへを投稿している。それと同じような雰囲気を意識している。
特に今回は「簡単な」数独が解けるまでの記録を投稿する。「難しい」数独が解けるまでの記録は次回だ。

今回は、一から自分で考えた結果ではなく、とあるサイトの情報を参考に、自分なりに実装した結果をまとめている。サンプル・コードは参照サイトのものとは大きく異なるのだが、ロジックは一緒だ。
いつも通り、サンプル・コードはPythonで記述した。Piscine受講生に配慮して、C言語的な記述になるよう配慮しているが、いつも以上に読みにくいのではないかと思う。参照元のコードに比して、全体が長くなっている。理由は追って説明する。

  • 準備
  • 分からなければ調べる。
  • 適切なロジックを理解する。
  • ロジックの理解を深める。-写経
  • ハマり処
  • 実行結果
  • 参照
  • テスト結果
    • Piscine掲載の問題
    • grid1指定の問題
    • 難問
  • サンプル・コード
続きを読む

2019年のアクセス集計、分析 アクセス集計から、クラスタ分析によりブログの特徴を探る

2019年も終わりに近づき、空いている時間でブログの年間アクセス集計をしてみようか、という気分になった。Google Analyticsを日々参照し、大体の傾向は掴んでいるのだが、複数の観点から参照することで思いがけない特徴を示すのではないか、同時に昨年から学び始めた統計を用いて、興味深い分類、傾向を見出せないか、と考えたからだ。

アクセス集計でよくあるのは、今年最も参照された記事、のような事柄だろう。「最も参照された」と言えば、おそらくアクセス数(Pageview)を真っ先に思い浮かべるのではないだろうか。とはいえ同一人物が繰り返し参照している可能性もあれば、アクセス数は多いものの、実際のところ短時間で離脱されている可能性もある。加えて次の事柄も集計すべきだろう。

User ユーザー数
New User 新規ユーザー数
Bounce rate 繰り返し参照された数
Avg. Time on Page 参照時間

同時に、これらのデータを元に同じタイプの投稿を分類し、傾向を分析してみることにした。

どういう結果が出るだろうか。

  • 準備
  • Pageview
  • User
  • New User
  • Bounce rate
  • Avg. Time on Page
  • RStudioでの集計
  • 参照
続きを読む

42 SILICON VALLEY Piscine 2017 evalexprを考える

42 SILICON VALLEY Piscine 2017の個人プロジェクト、3つ目はevalexpr。文字列として入力された四則演算を計算し、結果を出力するものだ。個人プロジェクトとして最後の課題となるためか、Day02~13までの学習内容を包含した出題内容となっている。関連するのは、例えば次の課題だ。

Day03 ft_atoi
Day05 atoi
ft_str_is_alpha
ft_str_is_numeric
Day07 ft_split_whitespace
Day08 ft_split_whitespace
Day11 スタック、pushとpop
Day13 木構造

evalexprを実装するに際し、これらすべてを使用する必要はないのだがatoiの使用は避けられないだろう。スタックと木構造の使用は受講者次第だ。私は使用していないのだが、人によっては数式を木構造、スタックへ変換し、あるべき順序での計算するために使用するだろう。
例によって問題は詳細を語らず、一部の解釈を受講者に委ねている節がある。

この投稿では、次の話題を採り上げている。

  • 問題の分析と仕様策定:対応すること、しないことの判断
  • 考え方、アプローチ
  • 実装

これまで同様、サンプル・コードはPythonで記述した。Piscine受講生に配慮して、C言語的な記述になるよう配慮している。1月実施のPiscineまで1週間に迫ろうとしている。この投稿がPiscine受講生の一助になれば、と思う。

  • 準備
  • evalexpr
    • 分析と仕様
    • 考え方とアプローチ
  • 実装
    • reformat
    • expression
    • term
    • factor
  • 余談
  • 参照
  • サンプル・コード
続きを読む

42 SILICON VALLEY Piscine 2017 Day04 Exercise 04 フィボナッチ数列と再帰の実践

昨日の投稿では再帰を説明した。あくまでも説明にフォーカスするため、42SV Piscine 2017の課題から離れて、独自の問題を用いた。考えやすい問題で、再帰する価値のある処理を示すためだ。
42 SILICON VALLEY Piscine 2017 match/nmatchを考える(番外編) 再帰の説明 - Technically Impossible
今回は再帰の実践として、Day 04 Exercise 04に挑戦する。これはフィボナッチ数列の問題だ。実際のところ、フィボナッチ数列再帰を用いることなく解くことができる。むしろ再帰を用いるのは非効率だ。しかし課題は再帰を使用することを求めている。

本日の投稿では、実践と共に次のことを示そうと思う。

  • 再帰を使わない解き方
  • 再帰を使う解き方
  • なぜ再帰を用いると非効率なのか
  • 非効率ではない再帰の解き方

この投稿がPiscine受講生の一助になれば、と思う。

  • 準備
  • Exercise 04
  • 大いなる無駄?
  • 余談-メモ化再帰
  • 参照
  • サンプル・コード
続きを読む

42 SILICON VALLEY Piscine 2017 match/nmatchを考える(番外編) 再帰の説明

このブログの読者は会社員と大学生が多く、どちらもいわゆるビジネス・アワーに訪れる人たちが多い。何かしらの問題に遭遇し、検索の結果、目的の投稿へ辿り着き、答えを見つけて帰っていくのだろう。
特定の記事は、ブックマークされることがあるかもしれない。繰り返し参照される記事だけはBounce rateが緩やかに上昇していく。

週末に投稿したmatch/nmatchが、このブログでは特異なアクセス傾向を示していることに気付いた。Avg. Time on Pageは当初4~5分前後だったものが、今日は後編が10分を超えた。
同時にBounce rateはどちらも9割近かったものが、昨日を境に後編だけ復帰した。
f:id:espio999:20191217230136p:plain
f:id:espio999:20191217230125p:plain
42関連の投稿は、これまでにない傾向を示している。おそらく勉強している人達が繰り返し訪れ、日、月曜日を境に前編を卒業して、後編へと前進したのではないかと解釈している。

私は読者に迎合するつもりはないのだが、熱意には応えたいと思う。要はお節介だ。
match/nmatchで詰まっている人の原因は再帰の理解にあるのではないかと考えている。今回はmatch/nmatchの話題に関連し、再帰を説明してみようと思う。
今回の問題はPiscineの問題ではなく、独自のものだ。あくまでも再帰の説明に焦点を絞っている。

  • 準備
  • 問題
  • ループで解く考え方
  • 再帰で解く考え方
  • 余談
  • 参照
  • サンプルコード
    • ループで解く
    • 再帰で解く
続きを読む

光回線が不通になったとき 確認、そしてバックアップ回線としてのプリペイドSIM

実質2日間、光回線の不通を経験した。その間のインターネットも断たれてしまった。原因はマンション共用部結線の経年劣化。対応作業そのものは迅速であったものの、NTT職員の訪問までには2日間を要した。経緯はこのような感じだった。

Day 0
障害発生日
午後に障害発生、NTTへ連絡。
点検訪問は明後日になると告げられる。
半日以上のインターネット不通
Day 1
障害発生翌日
終日インターネット不通
Day 2
障害発生明後日
午前中一杯、インターネット不通
正午に点検開始。障害回復。

今回は経年劣化によるもので、平時での対応だったため、回復までに数日間で済んだ。居住地によっては、さらに日数を要するところもあるだろうし、台風などの災害時であれば不通期間はさらに伸びるリスクもある。

障害確認から連絡までの流れ、必要な場合に個人でできる事前対策の一案として、プリペイドSIMの活用をまとめた。

  • 障害箇所の確認
    • ホームゲートウェイ、住戸内配線
    • 共用部からNTT局舎の問題
    • 住戸外からマンション共用部の配線
  • 光回線不通期間の対策ープリペイドSIMの活用
続きを読む