■前提
学校で学んだ一番重要な内容/事柄として、学び方に関する知見がある。
たとえば新しくプログラミング(言語)を学ぶとき、
そのプログラム言語を完璧に理解してからプログラミングをするのではなく
とりあえず書いてみて、必要に応じて調べて学んでいくのが良い。
学んだ上でそれが重要かつ必要なら自然に身についていく(ソラで書けるようになる)
...というやり方。これが、学習方法としてはかなり良い
......みたいな話
(似た話はプログミング以外でもよくある。余談)
これは本当に重要で、失敗することが耐えられない人
なんかはそういう点で不利だなってよく思う
(特に対戦ゲーなんかで)
で、ですよ、詰まった時に
もうやれねぇよこんなクソゲー!!
じゃなくて、何故詰まったんだろう みたいに考えるの、
重要よね。
みたいな風に思っているので、初心者(含私)はその心構えを忘れないようにしなくちゃな...
って思っている次第です。
■pythonで詰まったこと
・gcd
mathをimportして(これはOK)gcdを使って手元でOK、提出するとしょっぱなのtestcaseからREとなる。
...
math.gcd
...
実は入っている場所が違う
参考:
https://qiita.com/Kentaro_okumura/items/5b95b767a2e691cd5482
・再帰表現
実は上限がある
提出して処理中に
ロジックは問題ない(多分)から、まぁ、あってTLE(Time Limit Exceeded)(制限時間超過)
かなぁ...
...から、後半のテストケースが軒並みRE(Runtime Error)(実行中にエラー)
...なんでやねん
で、原因は再帰関数呼び出しだった
参考:
https://qiita.com/wifecooky/items/348da636f456a00120db
ただpythonはそもそも再帰呼び出しがかなり遅いらしく
使うべきではないレベルだとか
なので、そもそもそういった使い方を全力で拒絶しているから、ともいえる。
気付けないと(怪しく思って検索したりできないと)、ハマる。
■感想
・遅い
同じやり方がC++で通るけどPythonでは...みたいな例多い(らしい)(C++で自分で試したわけではないので...
・参加者多い
これはあとから知った。
学生が最初に覚える言語として、最近はCではなくPythonを勧められることも多い
(カリキュラムにPythonが用いられる)
らしく
最多がC++で、その次に参加者が多いらしい
結果、参考にできるソースが多く見つかる。
(ACソースを確認することで勉強になる/勉強しやすい)
勿論中には、なにこれ???これなにやってるのかわからん... みたいなソースも多々ある
・楽
参加者多いって話にも通じるが
いうてやっぱりスクリプト言語は導入も含めてクソ楽だと思う。取り回しがしやすい。
■勉強
知ってはいたが、300点問題と400点問題の間に大きな壁があるイメージで
(シンプルに大会の正解者数とかの傾斜を見ると一目瞭然)
私自身は400点が時々解ける, 300点が稀に解けないことがある
くらいのイメージ
で、
がまさに直撃で、私も、D埋めの為に色々と過去問から勉強してる感じ。
まぁにそれで解けるようになるので、楽しい。
学校で学んだ一番重要な内容/事柄として、学び方に関する知見がある。
たとえば新しくプログラミング(言語)を学ぶとき、
そのプログラム言語を完璧に理解してからプログラミングをするのではなく
とりあえず書いてみて、必要に応じて調べて学んでいくのが良い。
学んだ上でそれが重要かつ必要なら自然に身についていく(ソラで書けるようになる)
...というやり方。これが、学習方法としてはかなり良い
......みたいな話
(似た話はプログミング以外でもよくある。余談)
これは本当に重要で、失敗することが耐えられない人
なんかはそういう点で不利だなってよく思う
(特に対戦ゲーなんかで)
で、ですよ、詰まった時に
もうやれねぇよこんなクソゲー!!
じゃなくて、何故詰まったんだろう みたいに考えるの、
重要よね。
みたいな風に思っているので、初心者(含私)はその心構えを忘れないようにしなくちゃな...
って思っている次第です。
■pythonで詰まったこと
・gcd
mathをimportして(これはOK)gcdを使って手元でOK、提出するとしょっぱなのtestcaseからREとなる。
...
math.gcd
...
実は入っている場所が違う
参考:
https://qiita.com/Kentaro_okumura/items/5b95b767a2e691cd5482
>AtCoderのPythonのバージョンは3.4.3です。よってgcdはfractionsモジュールの中にあります。誰しもが一回はハマるので注意しましょう(Python 3.5からmathモジュールに追加されました)。まさにコレ
・再帰表現
実は上限がある
提出して処理中に
ロジックは問題ない(多分)から、まぁ、あってTLE(Time Limit Exceeded)(制限時間超過)
かなぁ...
...から、後半のテストケースが軒並みRE(Runtime Error)(実行中にエラー)
...なんでやねん
で、原因は再帰関数呼び出しだった
参考:
https://qiita.com/wifecooky/items/348da636f456a00120db
>Pythonが許容する 再帰処理の回数 を超えると最初、そんなことある??って思ってしまった。
>プログラムが下記のようなエラーが出て停止するようになります。
ただpythonはそもそも再帰呼び出しがかなり遅いらしく
使うべきではないレベルだとか
なので、そもそもそういった使い方を全力で拒絶しているから、ともいえる。
気付けないと(怪しく思って検索したりできないと)、ハマる。
■感想
・遅い
同じやり方がC++で通るけどPythonでは...みたいな例多い(らしい)(C++で自分で試したわけではないので...
・参加者多い
これはあとから知った。
学生が最初に覚える言語として、最近はCではなくPythonを勧められることも多い
(カリキュラムにPythonが用いられる)
らしく
最多がC++で、その次に参加者が多いらしい
結果、参考にできるソースが多く見つかる。
(ACソースを確認することで勉強になる/勉強しやすい)
勿論中には、なにこれ???これなにやってるのかわからん... みたいなソースも多々ある
・楽
参加者多いって話にも通じるが
いうてやっぱりスクリプト言語は導入も含めてクソ楽だと思う。取り回しがしやすい。
■勉強
知ってはいたが、300点問題と400点問題の間に大きな壁があるイメージで
(シンプルに大会の正解者数とかの傾斜を見ると一目瞭然)
私自身は400点が時々解ける, 300点が稀に解けないことがある
くらいのイメージ
で、
Noze@nozeice(見ず知らずの人のtweet)大雑把に、
2019/08/20 14:38:57
ABS
↓
A〜C埋め
↓
動的計画法超入門
↓
D埋め
↓
AtCoder版蟻本初級編←今ココ
とやってきて(比較的)スムーズに緑までこれたのでけんちょんさんの記事に感謝してる
がまさに直撃で、私も、D埋めの為に色々と過去問から勉強してる感じ。
まぁにそれで解けるようになるので、楽しい。