▶ 実 行
▶ 実行
クリア
逆コラッツステップ・レンダリング
by sphiarno🕷️88ver.
#コラッツステップを逆に進んで、対数で割って表示するプログラムです。 #いろいろ数字を入れると、なにか規則的に進んでいることが分かります。 #3の倍数が入ると、数字が増えるだけで面白みがないので、スイッチで除外してます。 #🌼---🌼---🌼 モジュール 🌼---🌼---🌼 !「https://n3s.nadesi.com/plain/1026.nako3」を取込。 #🌼---🌼---🌼 環境変数 🌼---🌼---🌼 変数 角度=0 変数 X=0 変数 Y=0 #定数 ゲーム画面=描画中キャンバス。 定数 中心=150 定数 半径=100 #コラッツ変数 変数 倍数三除外スイッチは、オン # 冗長省略(3の倍数は分岐しません) 変数 ハイカット=2048 # 最大計算数:上がなくなると下もパターンが崩壊します(不思議) 変数 コラッツステップ=30 # 実行ステップ数 変数 コラッツ遅延=0.002 # スピード ●(Lで)コラッツ画面表示とは 「#10101020」に線色設定。「#00000020」に塗り色設定。3に線太さ設定。 [0、0、300、300]に四角描画。 「#DD334480」に線色設定。空に塗り色設定。3に線太さ設定。 [中心、中心]に半径の円描画。 I=0 コラッツ集合=L 配列長は、コラッツ集合の配列要素数。 もし、配列長>0ならば、 コラッツ最大値=コラッツ集合[0]の自然対数 ここまで。 I<配列長の間、 X=2*PI*((コラッツ集合[I]の自然対数)/コラッツ最大値) Y=((XのSIN)*半径)+中心 X=((XのCOS)*半径)+中心 #「{X}、{Y}」を表示。 もし、コラッツ集合[I]%3=0ならば、 コラッツ円は、10。コラッツ色は「#eeeeaaf0」。 違えば、もし、(I<ハイカット)&&(配列長>ハイカット)ならば、 コラッツ円は、8。コラッツ色は「#eeaa77f0」。 違えば、 コラッツ円は、5。コラッツ色は「#6633ffa0」。 ここまで。 「#88888880」に線色設定。コラッツ色に塗り色設定。2に線太さ設定。 [X、Y]にコラッツ円の円描画。 I=I+1 「#10101008」に線色設定。「#00000002」に塗り色設定。3に線太さ設定。 [0、0、300、300]に四角描画。 「#DD334402」に線色設定。空に塗り色設定。3に線太さ設定。 [中心、中心]に半径の円描画 (コラッツ遅延)秒待つ。 ここまで。 ここまで。 ●(Lで)重複チェックとは 判定は、偽。 Iは0。 配列長は、Lの配列要素数。 (I<配列長-1)の間、 Jは、I+1 (J<配列長)の間、 もし、L@I=L@Jならば 判定は、真。 ここまで。 J=J+1 ここまで。 I=I+1 ここまで。 もし、判定が真ならば、 「重複しています」と表示。 ここまで。 ここまで。 ●(Lで返却リストに)集合前コラッツとは ●(NでRに)単体前コラッツとは RにN*2を配列追加。 もし、((N-1)%3=0)&&(((N-1)/3)%2=1)ならば Rに((N-1)/3)を配列追加。 ここまで。 ここまで。 配列長は、Lの配列要素数。 もし、配列長>ハイカットならば、 判定長=配列長-ハイカット 違えば、 判定長=0 ここまで。 Lを反復、 #3の倍数は分岐せず面白みに欠けるので、除外スイッチがある。 もし、!(((倍数三除外スイッチ=オン)&&(対象%3=0))||対象キー<判定長)ならば、 Rは、[] 対象でRに単体前コラッツ 返却リストにR@0を配列追加。 もし、R@1ならば、 返却リストにR@1を配列追加。 ここまで。 ここまで。 ここまで。 返却リストを配列数値ソート。 返却リストを配列逆順。 ここまで。 ●(Aで)逆コラッツセットとは 回転数=コラッツステップ 逆コラッツリストXは、[] 逆コラッツリストYは、[] 開始数は0。 開始数<5の間、 開始数=「この始まりの数は?(5以上){改行}<おすすめ>{改行}6で割って余りが1、2、5の数(例:11)」と尋ねる。 ここまで。 逆コラッツリストYに開始数を配列追加。 回転数回、 逆コラッツリストXは、逆コラッツリストY。 逆コラッツリストYは、[] 逆コラッツリストXで逆コラッツリストYに集合前コラッツ。 逆コラッツリストYでコラッツ画面表示。 ここまで。 逆コラッツリストYで重複チェック。 ここまで。 「仮」で逆コラッツセット。 「おしまい」と言う。