RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
最初に断っておくと、転職絡みの話ではありません。
まず経緯から。
ちょっと色々ありまして、Pythonをまた触ることになりました。
「また」といっても今回の案件はPython3でして、今までは仕事の関係で2しか触ったことがなく、
しかもそれが3年半前という、これからPython3案件を請けるにしては、割とヤバイ状況でして、
どうにかしてリハビリがしたい・・・でも今Pythonの環境持ってないし・・・
・・・ということで、オンラインで何か面白いリハビリ材料を探していたら、ヒットしたのがpaizaでした。
paizaというのは、ITエンジニア向け転職・就活・学習サービスで、恐らくかなり新興のモノです。
少なくとも僕が学生の頃にはなかったハズ・・・
職業エンジニアの方からするとオンラインコーディングができるこちらのページの方が有名かもしれません。
基本的には転職サイトのようなのですが、プログラム関係の学習サービスを展開しているほか、
スキルチェックというサービスがあって、paiza上でランク分けされたプログラムの問題を解くことによって
ユーザーのランク分け機能がある他、AtCoderのようなレーティングなんかもあったりします。
なんかpaiza側の解答が間違っている問題がちらほらあるみたいで、レーティングはあまにリ参考にならないかもしれません・・・
ぶっちゃけ上の方は競プロ絡み案件で、あまり実務には適さない問題も多く、
正直あまり興味はないのですが、スキルチェックの問題を利用すればPythonのリハビリになるのでは?と思いまして
とりあえずその場のノリでスキルチェックをやってみることにしました。
paizaのランクはS、A、B、C、D、Eの6ランクが存在し、問題のランクはS、A、B、C、Dと5ランクあります。
実は自分はpaiza自体は2年ほど前から登録だけしてる状態でして、ずっとEランクのままでした。
自分のランクよりひとつ上の問題が一問でも解けたらランクアップとなります。ランクダウンはないっぽいです。
どうやらpaiza自身はこのランクに随分と大きな自信を持っているようで、
高ランクになる度に耳障りのいい台詞を見る機会が増えていきますが、噓八百と考えたほうがいいでしょう。
で、一番易しいDランクの問題を初めて見たのが今から5日前になります。
スキルチェックでは色々な言語が使えるようで、僕の知らないプログラミング言語も対応しているくらいでした。
で、Dランクの問題ですが、
記憶にないです。
※因みにスキルチェックの問題は外部に記載が禁止されているそうです。
いや、なんか簡単というか、流石にこれで終わらせるのブログとして色々アレなので、
この記事を書くにあたって、paizaのログに残ってる自分の解答を見直したのですが
1行しか書いてない。
マジでこれ書けなかったらこの業界来ない方がいいぞ・・・?って本気で思うレベルでした。
ソースを見ても特に言うことが増えなかったので、さっさとCランクの問題に行きましょう。
Cランクですが、
これも記憶にないです。
ログによると、この辺からif for whileの条件文を書き始めたみたいです。いや待て大丈夫かこのレベル
これもマジで特記事項が何もないので次に行きます。
Bランクです。ここで2日目になってます。
ちょっと複雑なアルゴリズムになります。プロでも凡ミスしてアウトになる可能性があるのはここからでしょうか。
多重ループ回したり、簡単な文字列操作があったり、ロジック組んだりし始める、くらいのレベルですね。
この辺りから既存で用意されているテストケースをクリアしたヨシ!で提出すると、
境界値などのテストケースでカバーされていない範囲で弾かれて乙り出します。
私はCまでの問題が簡単すぎたせいもあって、余裕こいて確認せずに提出して1問殺しました(懺悔)
とはいえ、一般的なレベルで境界値やコーナーケースに注意すればそこまで難しくはないでしょう。
さっきのと別で大いなる力に弾かれて1問時間切れになりましたが(#^ω^)<鯖落ちクソ
D、Cと反射で解けるクソ雑魚ワンパン問題だったのに、Bでいきなりアルゴリズムを要求されます。
インターネッツ大航海をしていると、Bで急に難しくなった!という声があったり、
paiza的にもBをクリアすることで、応募可能な求人が一気に増えるそうです。
個人的な意見としても、Bがクリアできていれば一般的なIT系のPGとしてはやっていけると思います。
Bランクというのは「業界で最低限やっていけるかどうか」の結構大きな境目になっているのではないでしょうか。
それに、正直ここから上の問題が解けたところで、それが現場で生かされるケースはかなり少ないと思います。
プログラムを「計算」に使う分野じゃないと使わない知識かなぁ
さて、次にAランクです。2日サボったのでここで5日目です。
Aランクは、難しいです。
というか、ウン年間触れてもいないような言語でやるような問題ではないです。
具体的に言うと、Bランクまでは、プログラミング言語の使い方とかアルゴリズムの考え方とか、
プログラムやる上で普遍的に必要なレベルの範疇の問題だったのですが、、、
Aはアレです、方向性が競プロです。
そろそろリソースを考えてプログラムを組んでいかないとヤバイ感じになります。
ソースの実行時間に制限があったり、使えるメモリの量に制限があったりします。
いや、本当はDランクの問題からこれらの仕様は存在したのですが、
引っかかることがなかったので実質ないも同然だったんです。
なのですが、Aに関しては計算量考えてアルゴリズム考えたり、容量意識したメモリ取りが必要になります。
多分競プロ御用達のアルゴリズムとかがいくつかあるので、その辺の勉強が本来必要なんだと思いますが、
私はゴリ押しました。
いやだって、アルゴリズム自作したほうが早いし楽だし、人が考えたものってわかりにくいよね。
でも時間とかメモリとかの仕様を知らなかったせいでクリアには時間がかかってしまいました。
タイムアウトしたり、Pythonの再帰の上限値設定の存在を知らなくてランタイムエラー吐いたり・・・
そんな感じでやらかしまくって問題をいくつか落としてしまいました。
というか、問題によっては時間ギリギリになるせいでトロいPythonでは実行できずC++で書かされたりもしました。
というか、クリアした問題がそれだったのでAはPythonじゃなくてC++で解いています。
・・・そう、PythonじゃなくてC++で解いてしまったんですよ。
Pythonのリハビリで始めたのに!!!
手段と目的が入れ替わってしまった!!!
paiza、恐ろしい子。
では最後、Sランクです。これ解いたのがさっきです。ここまで実働3日!
Aの問題見る限り、Sも競プロ系だろうし解かなくてもいいかな~っていう気にもなったのですが、
やるからには一番上の方が気分いいじゃん?ということでタダの見栄、特に細かいことを考えずに突撃しました。
ただ、問題を選ぶときって問題のタイトルしか見れないんですよね。
問題選んでスタートしてから問題文が見れるので、選んだ問題がPytthonで解けるかどうかはガチャなんです。
まぁ結果から言うと、ガチャでSSR当てました。
問題文に振れない程度に内容を言うと、構文解析系の問題でした。
正規表現かけて回して再帰するだけの簡単な問題。正直Aより簡単だぞ?って思いながら解いてました。
この問題だけなのかもしれませんが、特に計算量とか気にする必要もなかったので、
もしかしたらSとAは問題の差異があまりないのかもしれません。
正規表現の実装は言語によって微妙にニュアンスが違うので、そこの設定にちょっと時間がかかりましたが、
それ以外の箇所は問題なく、普通に一発クリアでした。Cランク挑戦時以来の一発クリアですね。
という訳で、SランクをPythonで解いたので、最後はちゃんとリハビリを行うことができました!
Sまで解いた総括としては、Sはまだ問題を1問しか見ていないのでなんともですが、
自分のレベルならAで解けない問題はないかな?という感じです。尚凡ミスで乙る模様
paizaのサイトにはSランクは上位3%しかいないスーパープログラマだ!みたいな能書きが垂れ流されていますが、
大嘘だと思います。
その上位3%の母数には僕みたいにpaizaに登録してから
年単位でランクEのまま放置している人間が大量に含まれているんだと思います。
paizaのSランクについての認識を世間と共有するためにググってみたのですが、皆さん概ねその認識のようです。
いや、なんか、採用の面接でpaizaSランクです!ってドヤ顔するのに使っている層が一定数いるらしいのですが、絶対逆効果だと思います。
ただし、内部的にAランクとSランクで採用に関して区分けがされているパターンはあり得ると思いますので、
就活でpaizaを使う気があるなら、一応Sランクに上げておいた方がいいかと思います。
具体的に言うとランクSユーザーしか企業側にレコメンドされないとか、そもそも応募基準にランクがあるとか・・・
巷ではSランクにあがるためのなんとか~みたいなことが書いてあるサイトもいくつか散見されていましたが、
ぶっちゃけちゃんと勉強したら誰でもSランク、取れると思います。
というか、ノリと勢いだけで取れたので、本格的な競プロ系の勉強はしなくても取れるんじゃないかな。
多分アルゴリズムで詰まるようなレベルの問題はSランクでもそうそうないと思うので、
落ち着いて出力形式見て着実に入力条件縛ってコーナーケース確認して境界値も見て・・・ってやれば
Bまで解ける知識があるなら(再起の知識があれば)誰でも行けると思います。
再帰使った探索はちょっと頻度高いので、それは流石にわかってないと厳しいかな?って感じですかね。
・・・いや待て、この記事はSランクを目指すための記事じゃないんですよ。
この記事の目的は
paizaのスキルチェックはリハビリは初めて触る言語の勉強に使えますよ~
ということを紹介するためのお話でした。リハビリに使うならまずはBランクがおススメです。
という訳で、ここまでご覧いただきありがとうございました。paizaさん、宣伝したからお金ください
(^・ω・)ノ RadiumProduction at curonet
まず経緯から。
ちょっと色々ありまして、Pythonをまた触ることになりました。
「また」といっても今回の案件はPython3でして、今までは仕事の関係で2しか触ったことがなく、
しかもそれが3年半前という、これからPython3案件を請けるにしては、割とヤバイ状況でして、
どうにかしてリハビリがしたい・・・でも今Pythonの環境持ってないし・・・
・・・ということで、オンラインで何か面白いリハビリ材料を探していたら、ヒットしたのがpaizaでした。
paizaというのは、ITエンジニア向け転職・就活・学習サービスで、恐らくかなり新興のモノです。
少なくとも僕が学生の頃にはなかったハズ・・・
職業エンジニアの方からするとオンラインコーディングができるこちらのページの方が有名かもしれません。
基本的には転職サイトのようなのですが、プログラム関係の学習サービスを展開しているほか、
スキルチェックというサービスがあって、paiza上でランク分けされたプログラムの問題を解くことによって
ユーザーのランク分け機能がある他、AtCoderのようなレーティングなんかもあったりします。
なんかpaiza側の解答が間違っている問題がちらほらあるみたいで、レーティングはあまにリ参考にならないかもしれません・・・
ぶっちゃけ上の方は競プロ絡み案件で、あまり実務には適さない問題も多く、
正直あまり興味はないのですが、スキルチェックの問題を利用すればPythonのリハビリになるのでは?と思いまして
とりあえずその場のノリでスキルチェックをやってみることにしました。
paizaのランクはS、A、B、C、D、Eの6ランクが存在し、問題のランクはS、A、B、C、Dと5ランクあります。
実は自分はpaiza自体は2年ほど前から登録だけしてる状態でして、ずっとEランクのままでした。
自分のランクよりひとつ上の問題が一問でも解けたらランクアップとなります。ランクダウンはないっぽいです。
どうやらpaiza自身はこのランクに随分と大きな自信を持っているようで、
高ランクになる度に耳障りのいい台詞を見る機会が増えていきますが、噓八百と考えたほうがいいでしょう。
で、一番易しいDランクの問題を初めて見たのが今から5日前になります。
スキルチェックでは色々な言語が使えるようで、僕の知らないプログラミング言語も対応しているくらいでした。
で、Dランクの問題ですが、
記憶にないです。
※因みにスキルチェックの問題は外部に記載が禁止されているそうです。
いや、なんか簡単というか、流石にこれで終わらせるのブログとして色々アレなので、
この記事を書くにあたって、paizaのログに残ってる自分の解答を見直したのですが
1行しか書いてない。
マジでこれ書けなかったらこの業界来ない方がいいぞ・・・?って本気で思うレベルでした。
ソースを見ても特に言うことが増えなかったので、さっさとCランクの問題に行きましょう。
Cランクですが、
これも記憶にないです。
ログによると、この辺からif for whileの条件文を書き始めたみたいです。いや待て大丈夫かこのレベル
これもマジで特記事項が何もないので次に行きます。
Bランクです。ここで2日目になってます。
ちょっと複雑なアルゴリズムになります。プロでも凡ミスしてアウトになる可能性があるのはここからでしょうか。
多重ループ回したり、簡単な文字列操作があったり、ロジック組んだりし始める、くらいのレベルですね。
この辺りから既存で用意されているテストケースをクリアしたヨシ!で提出すると、
境界値などのテストケースでカバーされていない範囲で弾かれて乙り出します。
私はCまでの問題が簡単すぎたせいもあって、余裕こいて確認せずに提出して1問殺しました(懺悔)
とはいえ、一般的なレベルで境界値やコーナーケースに注意すればそこまで難しくはないでしょう。
さっきのと別で大いなる力に弾かれて1問時間切れになりましたが(#^ω^)<鯖落ちクソ
D、Cと反射で解けるクソ雑魚ワンパン問題だったのに、Bでいきなりアルゴリズムを要求されます。
インターネッツ大航海をしていると、Bで急に難しくなった!という声があったり、
paiza的にもBをクリアすることで、応募可能な求人が一気に増えるそうです。
個人的な意見としても、Bがクリアできていれば一般的なIT系のPGとしてはやっていけると思います。
Bランクというのは「業界で最低限やっていけるかどうか」の結構大きな境目になっているのではないでしょうか。
それに、正直ここから上の問題が解けたところで、それが現場で生かされるケースはかなり少ないと思います。
プログラムを「計算」に使う分野じゃないと使わない知識かなぁ
さて、次にAランクです。2日サボったのでここで5日目です。
Aランクは、難しいです。
というか、ウン年間触れてもいないような言語でやるような問題ではないです。
具体的に言うと、Bランクまでは、プログラミング言語の使い方とかアルゴリズムの考え方とか、
プログラムやる上で普遍的に必要なレベルの範疇の問題だったのですが、、、
Aはアレです、方向性が競プロです。
そろそろリソースを考えてプログラムを組んでいかないとヤバイ感じになります。
ソースの実行時間に制限があったり、使えるメモリの量に制限があったりします。
いや、本当はDランクの問題からこれらの仕様は存在したのですが、
引っかかることがなかったので実質ないも同然だったんです。
なのですが、Aに関しては計算量考えてアルゴリズム考えたり、容量意識したメモリ取りが必要になります。
多分競プロ御用達のアルゴリズムとかがいくつかあるので、その辺の勉強が本来必要なんだと思いますが、
私はゴリ押しました。
いやだって、アルゴリズム自作したほうが早いし楽だし、人が考えたものってわかりにくいよね。
でも時間とかメモリとかの仕様を知らなかったせいでクリアには時間がかかってしまいました。
タイムアウトしたり、Pythonの再帰の上限値設定の存在を知らなくてランタイムエラー吐いたり・・・
そんな感じでやらかしまくって問題をいくつか落としてしまいました。
というか、問題によっては時間ギリギリになるせいでトロいPythonでは実行できずC++で書かされたりもしました。
というか、クリアした問題がそれだったのでAはPythonじゃなくてC++で解いています。
・・・そう、PythonじゃなくてC++で解いてしまったんですよ。
Pythonのリハビリで始めたのに!!!
手段と目的が入れ替わってしまった!!!
paiza、恐ろしい子。
では最後、Sランクです。これ解いたのがさっきです。ここまで実働3日!
Aの問題見る限り、Sも競プロ系だろうし解かなくてもいいかな~っていう気にもなったのですが、
やるからには一番上の方が気分いいじゃん?ということでタダの見栄、特に細かいことを考えずに突撃しました。
ただ、問題を選ぶときって問題のタイトルしか見れないんですよね。
問題選んでスタートしてから問題文が見れるので、選んだ問題がPytthonで解けるかどうかはガチャなんです。
まぁ結果から言うと、ガチャでSSR当てました。
問題文に振れない程度に内容を言うと、構文解析系の問題でした。
正規表現かけて回して再帰するだけの簡単な問題。正直Aより簡単だぞ?って思いながら解いてました。
この問題だけなのかもしれませんが、特に計算量とか気にする必要もなかったので、
もしかしたらSとAは問題の差異があまりないのかもしれません。
正規表現の実装は言語によって微妙にニュアンスが違うので、そこの設定にちょっと時間がかかりましたが、
それ以外の箇所は問題なく、普通に一発クリアでした。Cランク挑戦時以来の一発クリアですね。
という訳で、SランクをPythonで解いたので、最後はちゃんとリハビリを行うことができました!
Sまで解いた総括としては、Sはまだ問題を1問しか見ていないのでなんともですが、
自分のレベルならAで解けない問題はないかな?という感じです。尚凡ミスで乙る模様
paizaのサイトにはSランクは上位3%しかいないスーパープログラマだ!みたいな能書きが垂れ流されていますが、
大嘘だと思います。
その上位3%の母数には僕みたいにpaizaに登録してから
年単位でランクEのまま放置している人間が大量に含まれているんだと思います。
paizaのSランクについての認識を世間と共有するためにググってみたのですが、皆さん概ねその認識のようです。
いや、なんか、採用の面接でpaizaSランクです!ってドヤ顔するのに使っている層が一定数いるらしいのですが、絶対逆効果だと思います。
ただし、内部的にAランクとSランクで採用に関して区分けがされているパターンはあり得ると思いますので、
就活でpaizaを使う気があるなら、一応Sランクに上げておいた方がいいかと思います。
具体的に言うとランクSユーザーしか企業側にレコメンドされないとか、そもそも応募基準にランクがあるとか・・・
巷ではSランクにあがるためのなんとか~みたいなことが書いてあるサイトもいくつか散見されていましたが、
ぶっちゃけちゃんと勉強したら誰でもSランク、取れると思います。
というか、ノリと勢いだけで取れたので、本格的な競プロ系の勉強はしなくても取れるんじゃないかな。
多分アルゴリズムで詰まるようなレベルの問題はSランクでもそうそうないと思うので、
落ち着いて出力形式見て着実に入力条件縛ってコーナーケース確認して境界値も見て・・・ってやれば
Bまで解ける知識があるなら(再起の知識があれば)誰でも行けると思います。
再帰使った探索はちょっと頻度高いので、それは流石にわかってないと厳しいかな?って感じですかね。
・・・いや待て、この記事はSランクを目指すための記事じゃないんですよ。
この記事の目的は
paizaのスキルチェックはリハビリは初めて触る言語の勉強に使えますよ~
ということを紹介するためのお話でした。リハビリに使うならまずはBランクがおススメです。
という訳で、ここまでご覧いただきありがとうございました。paizaさん、宣伝したからお金ください
(^・ω・)ノ RadiumProduction at curonet
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
(03/15)
(01/01)
(05/07)
プロフィール
HN:
Luz
性別:
男性
アーカイブ