全ては仮説と検証

Webに関する集客などの悩みを解決。情報活用・プログラミング教育が専門、佐藤雄大のブログ

プログラミング的思考力を持っているか簡易チェック

f:id:q2e2d2:20170302194849j:plain

問題は、45行ありますが、重複を取り除くと何件でしょうか。

 

道具は何を使っても構いません。

 

1.あなたはどのように、この問題に対応しますか?

 

2. 答えは何件?

 

【問題例】
aaa
bbb
aaa

なら、aaaが重複しているので、2件が答え。

 

【問題の趣旨】
メールアドレスのリストが複数あるが、リストを統合したい。
同じ人の複数登録を1登録として、みなしたいという仕事を与えられた。


【問題】

---ここから---
aaa
bbb
ccc
ddd
aaa
aaa
bbb
fff
ggg
bbb
aaa
aaa
bbb
ccc
ddd
aaa
aaa
bbb
fff
ggg
bbb
aaa
aaa
bbb
ccc
ddd
aaa
aaa
bbb
fff
ggg
bbb
aaa
ddd
bbb
ccc
ddd
aaa
aaa
bbb
fff
ppp
ggg
bbb
aaa

---ここまで---

 

 

【答え】

重複を取り除くので、このようになります

-------
aaa
bbb
ccc
ddd
fff
ggg
ppp

-------

先に答えを出すと、7件ですね。

 

【解説】

手作業で書き出して、一つずつやった方。
⇒プログラミングを学ぶと世界が開けます。生真面目を美徳としていると、今後は仕事ができない人に転落するかもしれません。

 

Excelなどを使って楽をしようと考えたけれど、やり方がわからなかった方。
⇒何か一つ得意なものをつくると、仕事が楽できるかもしれません。

 

Excelで答えを導いた方。
⇒素晴らしいです。他の言語を学んでもいいかもしれません。

 

プログラミングで答えを導いた方
⇒素晴らしいです。すでにプログラミング的思考を持っています。

 

ちなみに私であれば、45行のファイルがaaa.txtというファイルにして、
cat aaa.txt | sort | uniq | wc -l

と1行おまじないを書くだけで、答えを導くことができます。


ここでは、魔法だと思ってください。深くは解説しません。

 

ここで、ポイントなのは、「いかに楽をするのか」を考えることです。


生真面目に、紙に書き出すとか、1つずつ数えるのは面倒くさい。
だから、どうしよう。と考えることが大切です。

 

「面倒くさい」はネガティブな言葉に聞こえるかもしれませんが、仕事を効率よくするための、第一歩だと思います。