バックグラウンド
これは、私の以前の課題の続きです。その課題は、磁石を巨大な山に落として得られた彫刻の形状を計算することでした。
朗報です。エキセントリックなアーティストはあなたの作品が好きで、あなたのために別のプロジェクトを持っています。彼はまだ磁気彫刻を使用していますが、アートスタジオを宇宙に拡張することにしました。彼の現在の方法は、単一の立方体の磁石を軌道に爆破し、他の磁石を発射して巨大な磁気衛星を作成することです。
入力
入力は、0
sと1
sの有限リストであり、言語のネイティブリスト形式または文字列のいずれかで指定されます。作品の「青写真」として解釈され、左から右へと次のように処理されます。
2D平面の整数座標に浮かぶ単一の磁石から始め、指示に従って磁石を追加し続けます。ディレクティブ0
は、彫刻全体を反時計回りに90度回転させます。ディレクティブの場合1
、アーティストは彫刻の左端の列を見つけ、新しい磁石を下から発します。新しい磁石は、柱の一番下にある既存の磁石にくっついて、彫刻の一部になります。以前の課題とは異なり、磁石は隣接する列の他の磁石にくっつかないことに注意してください。その速度は今や天文学的です!
出力
アーティストは、完全な彫刻がガレージに収まるかどうかを知りたがっています(軌道から降ろす方法は不明のままです)。したがって、出力は彫刻の幅と高さであり、低いものから高いものへと並べられます。それらは、2要素のリスト、ペア、またはコンマで区切られた文字列として指定できます。
例
入力シーケンスを検討する
[1,0,1,1,0,1,0,0,1,1]
それを処理するには、空間に浮かぶ1つの磁石から始めます。
#
最初のディレクティブは1
なので、下から新しい磁石を撃ちます:
#
#
次のディレクティブは0
なので、彫刻を回転させます。
##
次の2つのディレクティブは1,1
です。つまり、2つの磁石を左端の列に向けて発射します。
##
#
#
次に、再び回転させて、次のように1回撮影し0,1
ます。
#
###
#
最後に、2回回転して2回撃ちます。
#
###
# #
#
結果の彫刻には幅3
と高さ4
があるため、出力します[3,4]
。
ルール
関数または完全なプログラムを与えることができます。最も低いバイト数が優先され、標準の抜け穴は許可されません。
テストケース
[1,0,1] -> [2,2]
[1,0,1,1,0,1,0,0,1,1] -> [3,4]
[1,1,0,1,1,0,1,0,1,1] -> [4,5]
[1,1,0,1,1,0,1,0,1,1,0] -> [4,5]
[1,0,1,0,0,0,1,1,0,0,0,1,1,0,0,0,1,1] -> [3,3]
[0,1,0,1,1,1,1,0,0,1,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,0,1,0,1,1,0,0,1,1] -> [5,7]
[1,0,1,1,1,1,0,1,0,0,0,0,1,1,1,0,1,1,0,1,0,1,0,0,0,0,0,0,1,1,0,1,0,1,1,1,1,0,1,1,0,0,1,1,1,1,0,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,1,1,0,0,1,0,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0] -> [11,12]
[1,1,0,1,1,0,1,0,1,1,0]
戻る[5,4]
といませんか[4,5]
?最後に彫刻を回転させます。