Open1

平衡3進数の計算

おしゅんおしゅん

電脳少女プログラミング2088 C問題
備忘録

学んだこと

・リストに順番に入力→逆順で出力作戦
・AIでコーディングするということ

問題
-10000≦N≦10000の数字が与えられる。
2がマイナス1として計算される特殊な3進数(0,1,2)→(0,1,-1)に変換するコードを作成せよ

学習①リストに順番に入力→逆順で取り出し

"".join(list[::-1])
#list = [1,2,3]
#出力は「321」

これでリストから逆順かつ、連続した値を取り出せる。
joinは文字列のメソッドで、**「指定されたイテラブル(この場合はリスト)の要素を、その文字列(この場合は空文字列 "")を区切り文字として結合する」**という処理を実行する
それをスライスで一番最後から取り出している。

学習②AIでコーディングするということ

特殊な3進数のことを深く学んだとしてもアルゴリズムの勉強にはなるが、自分の目指している姿とは離れて行ってしまう。うまくAIを使いたいと思っていたが、答えが合わず、自力で調べることなった。

その時に参考にしたのが以下のサイト。
http://www.gem.hi-ho.ne.jp/joachim/floorandceiling/signed_numerals.html

結局どうやってマイナス1の時は3進数に直すのか原理を解明して、コードのエラーを直していった。
AIが出力した結果を直すには知識や技術が必要。
そのことを思い知るいい機会になった。