難しいとは何なのか?
現在、Unityで3Dゲームを作っている。
一週間僕を悩ませたメニュー画面のアイテム移動があった。
「左右キーでアイテムの位置を回す」が本当に僕を悩ませ、解決に一週間もかかった。
まず左右キーを創らねばならぬ。次にメニューデザイン。
ここらは少し躓きながらも、1日足らずで解決できた。
一番悩ませた問題が左右キーのどちらかを押せば、アイテムが一つずつ右/左にずれる状態を、プログラミングで表現するかだった。
8割がた何をすればいいかはわかる。
配列を創って、ボタンを押したら±1ずつ右/左に値をずらせばいい。
残り2割は二つある。
最初と末尾の値入力
左ボタンを押して-1ずつずらす方法
何とか解決した。下記ツイートの動画を再生してほしい。
自分が陥った状況を入試問題で例えたら?
動画で見ると、すごく簡単な処理をしているように見える。
一方簡単に見える処理をプログラミングで表現すると、あるところまでサクサクできるものの、途中でつまづく。
躓く部分はプログラミング処理というよりは、国語と数学の融合問題だ。今回僕が落ちった現象を入試問題風にしてみよう。
問題
0からN(1<N)まで番号のついたカードがある。今ここにABCと名前がついた三つの箱がある。三つの箱は固定されて動かせない。並び方はCABと、Aが真ん中にある。
今、カードをシャッフルして順番に並べた。並べた後、先頭をA、二番目をB、末尾をCの箱に入れる。残りは箱の外において、シャッフルした順に並べる。末尾の次は先頭に戻り、二度とシャッフルしないものとする。
右ボタン(→)を押すと、箱中のカードをそれぞれ一つずつ右にずらす。左ボタン(←)を押すと、箱中のカードを一つずつ左にずらす。
この時、次の問いに答えよ。
Q1:N=2の時、カードの並びが012となった。C=2,A=0,B=1がそれぞれ入る。この時、
1):ボタンを右(→)を押すと、CABの中身(数字)はどう変わるか。
2):ボタンを左(←)を押すと、CABの中身(数字)はどう変わるか。
3):ボタンを2度右(→)を押すと、CABの中身(数字)はどう変わるか。
Q2:N=4の時、シャッフルしてカードの並びが25104となった。
4):シャッフル時点でCABの中身(数字)はどうなっているか。
5):ボタンを右(→)を押すと、CABの中身(数字)はどう変わるか。
Q3:N=K(K>-1)の時、右ボタンを押したときの処理を書け(本題)
数学で見たら簡単な問題かもしれない。プログラミング処理でも、途中までは簡単だ。
Q3になると、一気に頭を抱える。
この問題を解くには、プログラミングでなく図が必要となる。
答えと解説
Q1:N=2の時、カードの並びが012となった。C=2,A=0,B=1がそれぞれ入る。この時、
1):ボタンを右(→)を押すと、CABの中身(数字)はどう変わるか。
答:CAB=201(C,A,B = 2,0,1)で、今右ボタンを押すと、箱内のカードを一つずつ右にずらすので、CAB=120 //
2):ボタンを左(←)を押すと、CABの中身(数字)はどう変わるか。
答:(1)と同様に、今度は左にずらすので、CAB=012 //
3):ボタンを2度右(→)を押すと、CABの中身(数字)はどう変わるか。
答:(1)の値CAB = 120をさらに1つずらせばいいので、CAB=012 //
Q2:N=4の時、カードの並びが25104となった。
4):シャッフル時点でCABの中身(数字)はどうなっているか。
答:CAB=251でも125でもない。問題文に「先頭をA、二番目をB、末尾をCの箱に入れる」書いてあり、Cには末尾の4が入る。よってCAB= 425 //
5):ボタンを右(→)を押すと、CABの中身(数字)はどう変わるか。
答:A=4,B=2はすぐわかる。一つずつ順番がずれているので、今の末尾は0になっている(25104→42510)。よってCAB= 042 //
ここまでは少し頭が混乱しても、なんとかできると思う。
この流れをプログラミングで表現しろとなるから頭が痛い。
およその見当はつく。やってることは下記図だ。
「01234→40123→34012→23401→12340→01234」
順繰りに回っていく。明らかになっている部分は末尾、最初、二番目のみだ。
プログラミングの答えは上記ツイートに任せる。処理の見立ては簡単にできたが、はじめと末尾をどうするかが浮かばなかった。
難しいとは?
本題。難しいとは何なのか。図にしてみた。
できない×わからない場合、学習しなければならない。予習でありリサーチだ。
できないがわかる場合、脳の中ではすでに完成している。
後は実際に技術を学んで形にしていくだけ。
できるがわからない。ここが難しいの正体だ。
技術は簡単で、特定の知識を持っていれば誰でもできる。
だがすんなり思いつかない。思いつかないとは脳の中で「あれとこれ」がいまいち結びついていない。「結びつかない」が難しいだ。
世の中、ありとあらゆる問題がある。問題の大半は技術として「できる」ことだが、頭の中で「あれとこれ。あれからこれ」が結びつかない。
あれとこれを結び付けられる知恵こそが、世の中に求められてるのかなと考えている。
そして結び付けるには、情報を取り入れて、徹底的に細かく観察し、問いを立てて一歩ずつ進むしかない。
楽な道があればいいのになあ。
支援していただきありがとうございます。支援は僕の作品作りを含め、子供へのお小遣いや楽しいことに貢献します。ありがとうございます