タグ付けされた質問 「ascii-art」

この課題には、テキスト文字をペイントとして使用して画像を作成または解析することが含まれます。通常、これは1963年からのASCII標準で定義された(合計128から)95の印刷可能な文字のみを使用します。

4
ASCIIアートのエンドポイントを数える
ASCIIアートを表す文字列を入力として受け取り、入力のエンドポイントの数を出力または返すプログラムまたは関数を作成する必要があります。 入力は、文字space - | +(それぞれ0、2、2、および4つのエンドポイントを持つ)と改行で構成されます。例えば: -|++- + 隣接する2つのキャラクターは接続されているため、次の場合にはそれぞれ1つのエンドポイントが失われます。 -- -+ +- | | + + ++ | + | + 最初の例は 2+2+2+2+1+ 3 = 12 エンドポイント。 入力 入力文字のスペースからなる文字列になります-、|、+および改行。 入力の長さは0の長さにすることができ、上記の説明に一致する入力はすべて有効です(正規表現入力では[ -+|\n]*)。 末尾の改行はオプションです。 出力 単一の非負整数、エンドポイントの数。 例 出力は、入力の最後の行の後です。 + 4 -|++- + 12 +--+ | | +--+ 8 | | +--+-- ||| 12 …

5
回転した長方形の寸法を決定する
このスタックスニペットは、寸法、位置、角度、およびグリッド寸法のパラメーターを指定して、黒い背景にエイリアスされた白い長方形を描画します。 <style>html *{font-family:Consolas,monospace}input{width:24pt;text-align:right;padding:1px}canvas{border:1px solid gray}</style><p>grid w:<input id='gw' type='text' value='60'> grid h:<input id='gh' type='text' value='34'> w:<input id='w' type='text' value='40'> h:<input id='h' type='text' value='24'> x:<input id='x' type='text' value='0'> y:<input id='y' type='text' value='0'> θ:<input id='t' type='text' value='12'>° <button type='button' onclick='go()'>Go</button></p>Image<br><canvas id='c'>Canvas not supported</canvas><br>Text<br><textarea id='o' rows='36' cols='128'></textarea><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>function toCart(t,a,n,r){return{x:t-n/2,y:r/2-a}}function vtx(t,a,n){return{x:n.x+t*Math.cos(a),y:n.y+t*Math.sin(a)}}function sub(t,a){return{x:t.x-a.x,y:t.y-a.y}}function dot(t,a){return t.x*a.x+t.y*a.y}function inRect(t,a,n,r){var …

7
L字型トロミノを使用して2 ^ N x 2 ^ Nグリッドをタイリングする
数学的帰納法の証明手法について最初に生徒に教えるとき、一般的な例は、2 N ×2 NグリッドをL字型のトロミノでタイリングし、1つの所定のグリッドスペースを空のままにする問題です。(Nは非負の整数です。) あなたがまだそれを知らないならば、私はあなたにそれを任せます。それについて議論する多くのリソースがあります。 ここでのタスクは、Nの値と、空のままにするグリッド空間の座標を取り込んで、結果のtrominoタイルグリッドのASCII表現を出力するプログラムを作成することです。 キャラクターOは空のスペースを埋め、トロミノの4つの回転は次のようになります。 | +- | -+ -+ | +- | (はい、曖昧なことができ+ていると行く-と|、特定の手配のために、それは大丈夫です。) プログラムは、N = 0(1×1グリッドの場合)から少なくともN = 8(256×256グリッドの場合)まで動作する必要があります。の座標であるxとyの値が与えられますO: xは水平軸です。X = 1、左グリッド縁で、X = 2 Nは右グリッドエッジです。 yは垂直軸です。= 1 Yは、Y = 2、上部グリッドエッジでNは、ボトムグリッドエッジです。 xとyは両方とも常に[1、2 N ]の範囲にあります。 したがって、指定されたN、x、およびyに対して、プログラムは、x、yグリッド座標を除く、L字型のトロミノで完全に並べられた2 N ×2 Nグリッドを印刷する必要がありOます。 例 N = 0の場合、xとyは両方とも1でなければなりません。出力は単純に O N = 1、x = 1、y = …

4
スラッシュでランダムウォークを描く
(STDIN /コマンドライン/関数引数を介して)N整数正にかかるプログラムまたは機能を記述し、プリント又は戻る二次元の文字列表現ランダムウォーク Nが長いステップされ、スラッシュから引き出さ:/ \(プラススペースと間隔の改行)。 2Dランダムウォークは、無限整数格子の原点から始まります。その後、N回繰り返し、基本方向(上、下、左、右)がランダムに均一に選択され、歩行者はその方向に1ユニット移動します。結果として得られるパスは、ランダムウォークです。 N = 6のランダムウォークを次に示します。(-1、3)に達すると、それ自体をトラバースします。 これをスラッシュで描くには、基本的に全体を時計回りに45°回転させる必要があります。スラッシュバージョンでは、軸と開始点と終了点は描画されません。 / \ \ /\ このようなより複雑なウォーク(N = 20、ただし伝える方法はありません): これになります: / /\/ /\ \/\/ /\/ \/ プログラムは、これらのタイプのランダムウォークのスラッシュバージョンを生成する必要があります。ウォークが進むそれぞれの新しい方向をランダムに選択する必要があるため、特定のNのプログラムを実行するたびに、ほぼ確実に異なるウォークが生成されます。(疑似ランダム性は問題ありません。) 最低および最高のスラッシュの上下に空行が存在することはありません(オプションの末尾の改行を除く)。また、左端および右端のスラッシュの前後にスペースの空の列があってはなりません。 したがって、N = 1の場合、出力は常に/or \ですが、次のようなことはありません。 / 末尾のスペースは、右端のスラッシュの列を超えない限り許可されます。 最少バイトの送信が勝ちです。これは便利なバイトカウンターです。

1
正方形の対称性を見つける
正の整数のリストを受け取るプログラムまたは関数を作成します。これらの整数はそれぞれ、2D平面上の正方形の辺の長さを表します。各正方形は、平面内の任意の整数座標に移動できますが、回転することはできず、他の正方形と重なることはできません。 空白ごとに異なる印刷可能なASCII文字を使用して(空に使用されるスペースを除く)、プログラム/関数は、反射対称の水平線または垂直線を持つ正方形の単一配列を印刷する必要があります。そのような配置が存在しない場合は、何も印刷しないでください。 四角は区別できるように異なる文字です。すべての正方形の結合によって作成された形状のみが対称である必要があります。リストには94を超える要素は含まれないと想定できます(94文字があるため)。 たとえば、入力がの[2, 1, 2, 2, 2]場合、可能な出力は次のとおりです。 DD-- DD-- Z FFPP FFPP この形状には、反射対称の水平線があります。その上半分と下半分は鏡像です。他にもいくつかの可能性があります:(正方形に触れる必要はなく、同じ文字で2つの正方形が作られていない限り、任意の文字を使用できます。) 55 55 %% %% @ HH HH (( (( G 11 33 11 33 22 44 22 44 対称線は、文字間の境界でもあります。例[2, 4]: !!!! !!!! ++ !!!! ++ !!!! いくつかの正方形のセットは、対称的に配置することは不可能[1, 2, 3]です。 AAA BB C AAA BB (these can't …

4
スパイラルプログラミング
単一の整数Nを受け入れ、下のスパイラルの最初のNバーを中央の垂直バーから時計回りに外側に向かって(文字列として)出力または返す名前付き関数またはプログラムを作成します。 _______________ / _____________ \ / / ___________ \ \ / / / _________ \ \ \ / / / / _______ \ \ \ \ / / / / / _____ \ \ \ \ \ / / / / / / ___ \ \ \ \ \ \ …

6
仕様から長方形を生成する
前書き この課題は、2Dパターンマッチング言語であるGrimeに触発されました。基本的に、文字の2次元グリッドを記述する「グラマー」が与えられ、あなたの仕事はグラマーに従ってグリッドを生成することです。さらに、グリッドは特定の弱い意味で可能な限り小さくする必要があります。 入力 入力は、小文字のASCII文字と記号|およびを含む文字列-です。簡単にするために、入力には繰り返し小文字が含まれていません。文字列は、文字の長方形グリッドのクラスの仕様であり、次のようにスタックを使用して左から右に解析されます。 小文字の文字を考えるとc、スタックにプッシュしm×nた文字のグリッドをc任意のため、m, n ≥ 1。 パイプが与えられたら、|2つのグリッドAをポップBし、スタックから(B一番上にありました)、AB連結Bして得られたグリッドをの右側にプッシュしAます。これには、AそれBが必要で、同じ高さがあります。 ハイフンを指定すると-、2つのグリッドAをBスタックから(上にBあった)ポップし、A/B連結Bして得られたグリッドをの一番下にプッシュしAます。これは、ことが必要AとB等しい幅を持っています。 解析プロセス(文字ごとに異なる場合があります)の一部の選択mおよびn作成中に、入力仕様がスタックの最後に残っている長方形を正しく記述することが保証されます。 出力 出力は、入力で指定された文字の長方形のグリッドです。行または列を削除するとグリッドが無効になるという意味で、グリッドは最小限でなければなりません。改行で区切られた文字列(末尾の改行の有無にかかわらず)、2Dの文字配列、または文字列の配列のうち、最も便利な形式を返すことができます。 上記のとおりに入力を処理する必要はありません。唯一重要なことは、出力が正しいことです。 例 仕様を検討する par-s||e- まず、プッシュすることを選択した1×2の矩形をp、と1×1の長方形aとr(この理由は、後に明らかであろう)。その後、我々はポップaやr長方形を、その垂直連結を押します a r 次に、の1×2長方形をプッシュし、sそれと上の長方形をポップし、それらの水平連結をプッシュします as rs 次に、その四角形と四角形をポップしp、それらの連結をプッシュします pas prs 最後に、の3×1長方形をプッシュし、eそれと上の長方形をポップし、垂直連結をプッシュします pas prs eee これは、プログラムの出力、または少なくとも1つの可能性です。ただし、 ppas ppas pprs eeee また、仕様によって生成されます。多くの行と列を削除できるため、有効な出力ではありません。 より微妙な例として、考慮してください co|m|p|il|e|r|- この仕様は長方形を生成します comp iler これは有効な出力です。ただし、それはまた生成します commp iiler 無効にすることなく単一の行または列を削除することはできないため、これも有効です。 ルール 完全なプログラムまたは機能を提供できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 追加のテストケース これらを使用してプログラムをテストできます。 Input: …

11
アルファベットツリーにする
イントロ ほとんどのフォントでは、大文字のアルファベット文字のすべてがBDO、文字の境界矩形の4つの角のいくつかにほぼ接触する単一の行を持っていますACEFGHIJKLMNPQRSTUVWXYZ。 たとえばA、キャラクターの左下隅と右下隅を「タッチ」する2本の脚。同様に、C右上隅と右下隅に触れます(少し曲がっていますが、十分に近いです)。L左上と右下の角に1本の線で触れているだけです。の左下隅Lは頂点であり、単一行の終わりではありません。 ここに、私が見ているStack Exchangeフォント(できればあなたも)によると、どのキャラクターがどのコーナーに触れるかを示した表を示します。1は左上、2右上、3左下、4右下です。 A: 3 4 C: 2 4 E: 2 4 F: 2 3 G: 2 H: 1 2 3 4 I: 1 2 3 4 J: 1 3 K: 1 2 3 4 L: 1 4 M: 3 4 N: 2 3 P: 3 Q: 4 …

3
私をウィンドウマネージャーにしてください!
私はコードの肥大化が嫌いです! そこで、Windows 7システムをゴルフバージョンに置き換えることにしました。ただし、簡単ではないことがわかっているので、最初にプロトタイプを作成しましょう。ユーザーからウィンドウのリストを取得し、標準出力に疑似グラフィック表示を使用して表示します。 例:ユーザー入力: 0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5 CodeGolf®Window Manager™の出力: ┌──────────────┐ │::::::::┌─────┴┐ │::::::::│:┌────┴┐ │::::::::└─┤:┌───┴┐ │::::::::::└─┤::::├┐ │:::::::::::::└─┬──┘├┐ │::::::::::::::├─┬─┘│ │::::::::::::::│└──┘ │:::::::::::::::│ │:::::::::::::::│ └──────────────┼┼────┐ │::::│ │::::│ ┌────┤::::│ │::::│::::││ └────┴────┘ 入力: 標準入力から取得(または、システムにnoがある場合、stdin複数行の入力を提供できるメソッド) 各行には、カンマで区切られた4つの数字が含まれます-ウィンドウの座標 最初の2つの数字:左上隅。最後の2つの数字:右下隅 x,y表記を使用する 出力: 標準出力に書き込みます(または、システムにがなければ、stdout等幅テキストを表示するものは何でも) ウィンドウ境界の描画にコードページ437の単一のボックス描画文字を使用する 入力で後で指定されたWindowsは、以前に指定されたものを覆い隠します ウィンドウをコロン文字で埋めます。 : ウィンドウの整列を壊さない限り、先頭と末尾のスペースは問題ありません ノート: サポートしたい最大解像度:76(水平)x 57(垂直) 悪い入力をサポートする必要はありません ウィンドウの最大数:255(制限が必要な場合) Windows 7 cmdシェルでは、デフォルトでコードページ437文字が表示されます。誰かがLinuxでそれを行う方法を持っている場合(使用するxtermか何か)、ここで説明してください …

1
コードゴルフ:宇宙船の運命は?[アスキーアート版]
バックグラウンド 遠くの銀河(そして恐らくは宇宙)には、宇宙船とたくさんの惑星がありました。船内の故障により、宇宙船の燃料が不足しました。現在、惑星群の近くで危険なほど遅い速度で動いており、そこから脱出しなければなりません!乗組員の運命はどうなりますか? チャレンジ あなたはUSS StackExchangeのリードプログラマーです。そのため、あなたは、あなたが惑星に土地を衝突させる運命にあるかどうかを明らかにし、惑星系から逃れるか、永遠に軌道にとどまるシミュレータを書くことを望みます。 ただし、宇宙船の爆発は、計算リソースが非常に限られていたことを意味します。プログラムはできるだけ小さくする必要があります。また、これは、実行するシミュレーションを入力する唯一の可能な方法がASCIIアートを使用することであることを意味します。 シミュレーション この多元宇宙の象限では、ASCIIアートに対応するために物理法則がわずかに変更されています。これは、コスモスが細胞に分割されることを意味します。移動はセル単位で記述され、時間は時間ステップ単位で記述されます。 船自体に勢いがあります。船が前のタイムステップでx軸に+2セル、y軸に-1セル((2、-1)と略す)を移動し、重力場がない場合、船は正確に移動します次のタイムステップで同じ速度。 いくつかの惑星があり、そのすべてがそのすぐ周囲の8つのセルに重力場を及ぼし、それが船の速度に影響を与え、船を惑星に近づけます。惑星の「北」になると、フィールドは(-1,0)の力で船を1つのセルから「南」に引き寄せます。ちょうど惑星の「北東」であると、船は1セルを「南」に、1ユニットは「-1、-1」の力で「西」に引っ張られます。 重力場は、重力でセルを離れるときに、船の運動量にベクトルを追加します。船が直前に(2、-1)セルを移動し、現在(-1,1)の重力場にいる場合、この次のタイムステップで(1,0)セルを移動します。船が複数の惑星に近接している場合、追加するベクトルが複数あります。 入力 STDINでは、惑星の座標と船の現在の速度を表示する惑星システムのASCIIアート表現を受け取ります。@記号の形で複数の惑星があり、av ^ <>記号の形で1つの宇宙船があります。船のシンボルの選択は、船の現在の速度を示します(重力が追加される前)。たとえば、<は西への1セルの速度を意味し、^は北への1セルの速度を意味します。すべての空のスペースはピリオドで構成され、すべての行が同じ幅になるようにパディングされます。空白行は入力の終わりを表します。入力の例を次に示します。 ................. ...@.@........v.. ......@..@..@@... ..@.............. .......@..@...... ................. 出力 出力はSTDOUTの1つの単語になり、船が重力から逃れるか、土地を惑星に衝突させるか、永久に周回するかがわかります。 重力からの脱出は、船がマップから移動することとして定義されます。船が脱出する場合、プログラムは「エスケープ」という単語を出力する必要があります。 クラッシュランディングとは、船が惑星を直接通過するか、タイムステップ中に同じセルに到達することです。タイムステップごとに船の位置を単純に計算するだけでは不十分であることに注意してください。(5,5)の速度で移動している船は、(1,1)にある惑星に衝突しますが、単純な計算では、そのセルを訪れることはありません。ただし、速度が(5,6)の船は、陸地を惑星に衝突させません。宇宙船がcrash落した場合、プログラムは「クラッシュ」という単語を出力する必要があります。 周回は検出が最も難しい場合があります。宇宙船が同じセルを2回、同じ速度で訪れるたびに、周回が行われます。船が周回する場合、「orbit」という単語を印刷する必要があります。 上記の例の出力は次のとおりです。 escape 説明 上記の例の各タイムステップで宇宙船が移動した場所を示すマップを次に示します。 ^ ................. ...@.@........v.. ....^.@..@..@@... ..@..<.<<<.<.v... .......@..@...... ................. それは南に行き、西に向き、廊下を下り、北に向き、そし​​て重力のせいで、高速で惑星の間を狭く逃げました。 検査のためのより多くのケース ... ^@. ... orbit ........... .>@.@...... .@......@.. ....@...... crash (it crashes …


6
数字の三角波を印刷
波の振幅と周期を指定して、波を印刷します。詳細については、サンプル出力を参照してください。波形の総数は周期に等しく、各波形の高さは振幅に等しくなります。振幅と周期は10未満です。末尾のスペースは無視できますが、先頭のスペースは無視できません。 Sample Input 3 2 Sample Output 3 3 232 232 12321 12321 12321 12321 232 232 3 3


18
ウォーカーが参加!-アラン・ウォーカーのロゴ
アラン・ウォーカーは、彼のこれまでの人気曲「フェード」から知っているかもしれません。現在、彼の「フォロワー」は「ウォーカー」と呼ばれ、ロゴが付いています。これは簡略版です。 \\ \\ //\\ \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // \\ // //\\ \\ // \\// // \\ \\// // // \\ \\ //\\ // \\ //\\ \\// \\// \\ \\ このチャレンジの目標は、このロゴを印刷することです。 ルール: メタ標準に従って関数から文字列のリストを返す場合は、画面に出力するフッターを提供してください。 上記のロゴのすべてのキャラクターがそこにいなければなりません。ショートカットはありません! 最短バイト数が勝ちます!

30
ASCIIミーム矢印ジェネレーター
仕様書 数値を指定するとn、>サイズがASCIIの「ミーム矢印」(より大記号)を出力しますn。 n 常に0より大きい正の整数になります。 例 n = 2 \ \ / / n = 5 \ \ \ \ \ / / / / / サンプルコード 以下は、正しい結果を返す、Crystalで作成されたサンプルプログラムです。として実行します./arrow 10。 arrow.cr: def f(i) i.times { |j| j.times { print ' ' } puts "\\" } i.times { |j| (i-j-1).times { print ' …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.