カオスはASCIIラダーです


43

あなたは何も知らない 私は物事 カオスは梯子では、テレビシリーズから記憶に残るラインでゲーム・オブ・スローンズ

この課題の目的は、ASCIIアートでカオスからはしごを構築することです。

挑戦

入力

  • ラダー幅W >= 3(整数)
  • ステップの高さH >= 2(整数)
  • ラングの数N >= 2(整数)。

出力

横桟縦レールを備えたはしご、すべて1文字幅。ラダー幅(W)には2つのレールが含まれ、ステップ高さ(H)には対応するラングが含まれます。

最上部と最下部を含むすべての横木には、上下の長さの垂直レールがH-1あります。この例では、これをより明確にします。

ラダーについて説明する印刷可能な、非空白文字のASCII文字の包含範囲であること、!(コードポイント33)に~(コードポイント126選択図実際の文字が選択される)ランダム。入力が与えられると、文字のランダムな選択のそれぞれは、非ゼロの確率を持たなければなりません。それ以外は、確率分布は任意です。

水平または垂直の先頭または末尾の空白が許可されます。

与えられたW=5, H=3, N=2、1つの可能な出力は次のとおりです。

x   :
g   h
q$UO{
t   T
6   <
bUZXP
8   T
5   g

ラングと垂直セクションがあるためH*(N+1)-1、合計の高さはであることに注意してください。NN+1

追加規則

  • 入力手段と形式は通常どおり柔軟です。たとえば、3つの数値を任意の順序で入力したり、それらを含む配列を入力したりできます。

  • 出力は、STDOUTまたは関数から返される引数を介して行われます。この場合、改行を含む文字列、2D文字配列、または文字列の配列です。

  • プログラムまたは機能を提供できます。

  • 標準的な抜け穴は禁止されています。

  • バイト単位の最短コードが優先されます。

テストケース

それぞれについてW, H, N、可能な出力が表示されます。

W=5, H=3, N=2:

\   ~
:   K
ke:[E
5   u
0   _
8Fr.D
#   r
7   X


W=3, H=2, N=2:

$ X
Mb)
0 ]
(T}
j 9


W=12, H=4, N=5:

d          Y
P          `
5          3
p$t$Ow7~kcNX
D          x
`          O
*          H
LB|QX1'.[:[F
p          p
x          (
2          ^
ic%KL^z:KI"^
C          p
(          7
7          h
TSj^E!tI&TN8
|          [
<          >
=          Q
ffl`^,tBHk?~
O          +
p          e
n          j


W=20, H=5, N=3:

G                  %
o                  y
%                  3
-                  7
U'F?Vml&rVch7{).fLDF
o                  }
U                  I
h                  y
a                  g
;W.58bl'.iHm\8v?bIn&
,                  U
N                  S
4                  c
5                  r
F3(R|<BP}C'$=}xK$F]^
'                  h
h                  u
x                  $
6                  5    

ASCII文字の(数値)範囲を追加できますか?
ロッド

@Rodいいね。完了
ルイスメンドー

1
ランダム性の品質にはどのような下限がありますか?ランダムなポイントから始まり、モジュロ(126-33)をインクリメントすることは、隣接する値の間の明らかな相関のために適格ではないと仮定します。または、可能なすべてのシーケンスを生成できる必要がありますか?(つまり、1つの文字が次の文字を一意に決定するため、8ビットの線形合同ジェネレーターは機能しませんか?)
ピーターコーデス

@PeterCordes 可能なすべての組み合わせが発生する限り、何らかの相関関係を持つことに問題はありません。あなたが言うように、それはいくつかの組み合わせは不可能、異なる位置の文字の間に強すぎる統計的依存性を導入しているため、あなたが説明したアプローチは、有効ではありません
ルイスMendo

1
@PeterCordesはい、理論的には意味があります。RNGの強度について心配する必要はありません。RNGが理想的であると想定できます。これについては、いくつかのメタコンセンサスがあります。もっと具体的なものがあると思いましたが、これこれ
ルイスメンドー

回答:


6

ゼリー 24 23  22 バイト

«þỊoU$ẋ⁵‘¤Ḋ×94X€€+32ỌY

完全なプログラムは3つの引数を取りWHNその結果を印刷します。

オンラインでお試しください!

どうやって?

単一のラングとその下の垂直セクションの2D配列マスクを構築し、それを数N+1回繰り返して上のラングを削除し、マスク値に応じてランダムな文字またはスペースを配置します。

«þỊoU$ẋ⁵‘¤Ḋ×94X€€+32ỌY - Main link: W, H (N is third input / 5th command line argument)
 þ                     - outer product (build a table using):
«                      -  minimum
                       -  ...note: þ implicitly builds ranges of W and H prior
  Ị                    - insignificant? (abs(z)<=1) - yields a W by H 2-d array,
                       -   all zeros except the left and top edges which are 1s
     $                 - last two links as a monad:
    U                  -   upend (reverse each row)
   o                   -   or (vectorises) - giving us our |‾| shape of 1s
         ¤             - nilad followed by link(s) as a nilad:
       ⁵               -   5th command line argument, N
        ‘              -   increment -> N+1
      ẋ                - repeat list - giving us our ladder-mask plus a top rung)
          Ḋ            - dequeue - remove the top rung
            94         - literal ninety-four
           ×           - multiply (vectorises) - replace the 1s with 94s
              X€€      - random for €ach for €ach - 0 -> 0; 94 -> random integer in [1,94]
                  32   - literal thirty-two
                 +     - add (vectorises) - 0 -> 32; random integers now from [33,126]
                    Ọ  - character from ordinal (vectorises)
                     Y - join with newlines
                       - implicit print

34

オペレーションフラッシュポイントスクリプト言語、643 624バイト

f={l=["""","!","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"];t=_this;w=t select 0;r={l select random 92};v="";s=v;i=2;while{i<w}do{i=i+1;v=v+" "};p={i=1;while{i<t select 1}do{i=i+1;s=s+call r+v+call r+"\n"}};k=0;call p;while{k<t select 2}do{k=k+1;i=0;while{i<w}do{i=i+1;s=s+call r};s=s+"\n";call p};s}

文字コードから文字を作成する方法がないため、途方もなく長い。

で呼び出す:

hint ([5, 3, 2] call f)

出力:

ラダーは、フォントが等幅ではないため、非常に混chaとします。

展開:

f =
{
    l = ["""","!","#","$","%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","\","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~"];

    t = _this;
    w = t select 0;

    r =
    {
        l select random 92
    };

    v = "";
    s = v;

    i = 2;
    while {i < w} do 
    {
        i = i + 1;
        v = v + " "
    };

    p =
    {
        i = 1;
        while {i < t select 1} do 
        {
            i = i + 1;
            s = s + call r + v + call r + "\n"
        }
    };

    k = 0;
    call p;
    while {k < t select 2} do 
    {
        k = k + 1;

        i = 0;
        while {i < w} do
        {
            i = i + 1;
            s = s + call r
        };
        s = s + "\n";

        call p
    };

    s
}

"\n"動作しない"\xa3"ように見える ものを取得するのは£動作しているように見えますか?Unicodeエスケープを使用できる場合、その配列をトリミングできる場合があります。
チャラッカ

これを自分で実行するにはどうすればよいですか?:D
オタクI

22
これは、スクリプトが記述され、スペースと改行が削除されたように見えます。はしごのイメージのために賛成票を得ているだけなのか、それとも賢いゴルフを見逃したのか?
ジョナサンアラン

@steadyboxは、その1つの質問xDで非草原のスクリーンショットをリクエストした後、コンテキストスクリーンショットを使用していますか?
魔法のタコUr

@Tschallacka \nは、認識される唯一のエスケープです。(および""1つを表す引用符内"
Steadybox

14

05AB1E、29バイト

順番に取られた入力 N, H, W

>*GNUžQ¦©.RIÍFð®.R«X²Öè}®.RJ,

オンラインでお試しください!

説明

>*G                              # for N in [1 ... (N+1)*H)-1] do:
   NU                            # store N in variable X
     žQ                          # push a string of printable ascii
       ¦©                        # remove the first (space) and save a copy in register
         .R                      # pick a random character
           IÍF                   # W-2 times do:
              ð                  # push a space
               ®.R               # push a random ascii character
                  «              # concatenate
                   X²Ö           # push X % H == 0
                      è          # index into the string of <space><random_char> with this
                       }         # end inner loop
                        ®.R      # push a random ascii character
                           J,    # join everything to a string and print

これは少し不正です。
vdegenne

4
@ user544262772なぜそうですか?
ジョナサンアラン

これについて少し説明してもらえますか?
ミーシャ

@MischaBehrend:確かに、説明を追加しました。
エミグナ

3
@ user544262772ゴルフ用の言語でよくゴルフされた答えを出すのは非常に難しいかもしれません、ゴルフ用に設計されていると信じていますが、それらを使用するには通常、いくつかの考えが必要です")。
ジョナサンアラン

13

C、95バイト

f(w,h,n,i){++w;for(i=0;i++<w*~(h*~n);)putchar(i%w?~-i%w%(w-2)*((i/w+1)%h)?32:33+rand()%94:10);}

8

R138の 129 111 98 93バイト

Neal Fultzのおかげで-13バイト!

ロビン・ライダーのおかげで-1バイト

function(W,H,N){m=matrix(intToUtf8(32+sample(94,W*(h=H*N+H-1),T),T),h)
m[-H*1:N,3:W-1]=" "
m}

オンラインでお試しください!

無名関数; 結果を行列として返します。

そのWord Gridsの質問のおかげで、私はマトリックスについていつもよりもずっと考えてきました。私は、ラングは、ステップの高さの倍数であるそれらの行列の行にあることが観察されH(Rは、1-インデックスされる)、及びレールは最初と最後の列であること、1およびW。そこで、ランダムなASCII文字のマトリックスを作成し、これらの基準に一致しない文字をスペースに置き換えて、マトリックスを返します。TIOリンクはそれをうまく印刷します。

Neal Fultzは、スペース文字に異なるインデックス付けを提案しました[-H*(1:N),3:W-1]。これは、エッジの<==> ではなく、H:の倍数の行の文字を除くすべての文字を置き換えます。-H*(1:N)3:W-12:(W-1)

R、121バイト

function(W,H,N)for(i in 1:(H*N+H-1)){for(j in 1:W)cat("if"(!(i%%H&j-1&j-W),sample(intToUtf8(33:126,T),1)," "))
cat("\n")}

オンラインでお試しください!

私が始めた元のマトリックスベースのアプローチに対する改善。それは同じアルゴリズムですが、forループは行列を作成して印刷するよりも短いです(ただし、印刷しない場合はそうではありません!)


m[-H*(1:N),3:W-1]=" "少し短く見える-いつでもテストrowcol2次元スライスに置き換えることができます。
ニールフルツ

@NealFultzうわー、それは非常に素晴らしいです!ありがとうございました!
ジュゼッペ

交換することにより-1バイトsample(33:126,...)32+sample(94,...)
ロビンライダー


6

34 32バイト

E…¹×⁺¹NN⪫EIζ⎇∧﹪ιIη﹪λ⁻Iζ¹ §⮌γ‽⁹⁴ω

オンラインでお試しください!N、H、Wの順に入力します。詳細な近似Plus(InputNumber(), 1)現在、TIOでは壊れています)。説明:

E…¹×⁺¹NN

範囲にマップします1..H*(N+1)。これは、iがの倍数であるときにラングが表示されることを意味しHます。

次の結果に参加します。

EIζ

暗黙の範囲にわたるマッピング0..W

⎇∧﹪ιIη﹪λ⁻Iζ¹ 

列がそうでない0W-1、行が倍数でないH場合は、スペースを出力します。

§⮌γ‽⁹⁴

そうでない場合は、事前定義されたASCII文字変数を取得し、それを逆にして(94番目にスペースを入れて)、現在の最初の94からランダムな文字を出力しSliceます。

ω

空の文字列を使用して結合します。最終結果は暗黙的に印刷されます。


それが役立つかどうかはわかりません、はしごを描いてから、peekallを作成し、ランダムな印刷可能なものの上にマッピングすることができると思いますか?編集壊れているようです。おっと。
ASCIIのみ

私は(かなり確信して、それが前に働いていた)、それを修正しようとするでしょうが、それはしばらく時間がかかるかもしれないので、私は少し忙しかった
ASCIIのみ

@ASCIIのみあなたが考えていると思いNθGH↓θ→N↑θ*‖O↓F⁻N¹C⁰θ¿EKA§⮌γ‽⁹⁴«ますか?まあ、私は二分し、コミットa0a6316がそれを破った。
ニール

@ ASCIIのみ、実際には非常に真実ではないのは、中に無関係なバグがあったことMap、それは使用場所not is_command、それが意味する場合がis_command。したがってNθGH↓θ→N↑θ*‖O↓F⁻N¹C⁰θUMKA§⮌γ‽⁹⁴、そのバグがなかった場合は書くことになっています。
ニール


6

Perl 6の76の 73バイト

->\h,\n,\w{map {chrs (roll(w,1..94)Z*1,|($_%%h xx w-2),1)X+32},1..^h*n+h}

オンラインでお試しください!

引数として(h、n、w)を取ります。文字列のリストを返します。

説明:

-> \h, \n, \w {  # Block taking arguments h, n, w
    map {
        # String from codepoints
        chrs
             # Generate w random numbers between 1 and 94
             (roll(w, 1..94)
              # Set inner numbers on non-rungs to zero
              Z* 1, |($_%%h xx w-2), 1)
             # Add 32 to numbers
             X+ 32
    }
    # Map h*n+h-1 row numbers (1-indexed)
    1..^h*n+h
}

代わりにxxとを使用する代替73バイト。たぶん、あなたはどんなバイトでもゴルフをする場所を見つけることができますか?++$map
ジョーキング

5

PowerShell132 124バイト

param($w,$h,$n)-join([char[]]((($a=('#'+' '*($w-2)+"#`n")*--$h)+'#'*$w+"`n")*$n+$a)|%{($_,[char](33..126|Random))[$_-eq35]})

オンラインでお試しください!

我々は唯一の構成ラダー構築#最初の()、その後、ループ|%{...}の各文字を通って、ifそれの-eqにUALを35、私たちは新しい引き出して、Random適切な範囲から文字を。それ以外の場合は、出力します(つまり、スペースまたは改行)。


5

JavaScript(ES6)、117 115バイト

文字ごとに出力を構築する再帰関数。

「まあ、文字通りの改行はありません!」

(w,h,n)=>(g=x=>y<h*n+h-1?String.fromCharCode(x++<w?x%w>1&&-~y%h?32:Math.random()*94+33|0:10)+g(x>w?!++y:x):'')(y=0)

デモ


畜生!私がいた過程で、私はこれを見たときに鉱山をダウンゴルフの。:\再び勝ちます!:p
シャギー

(今のところ)私はゴルフを終えました- String.fromCharCodeこれを見た後に自分で思いついたとは正直に言えなかったので、私はすべての三元を移動することで線を引きました。あなたは私のものがあなたのものとあまりにも似ていると感じたら教えてください。
シャギー

@Shaggy心配なし!(実際、私の投稿は私の投稿後にのみ表示されました。以前に表示されていた場合は、おそらくあきらめていたでしょう。)
Arnauld

1
ああ、それはゲームの性質です!:) ちなみにソリューションを組み合わせると113バイトになります
シャギー

5

Python 2、142バイト

lambda w,h,n,e=lambda:chr(randint(33,126)):[e()+[eval(("e()+"*(w-2))[:-1])," "*(w-2)][-~i%h>0]+e()for i in range(h*-~n-1)]
from random import*

オンラインでお試しください!

ovsのおかげでバイトを節約できました!


@LuisMendo今修正したと思います。
ミスターXcoder

@LuisMendo注意深くチェックしないのは私のせいです。
ミスターXcoder


@ovsありがとう!1しかし、あなたは前で忘れていた> _>
Mr. Xcoder



3

SOGL V0.1232の 31 バイト

 ~ΔkψR
I{e{R}¶bH{Re⁾⌡@R¶}}¹∑e⌡k

ここで試してみてください!

N、W、Hの順に入力します。

説明:

 ~ΔkψR

     R  a function named "R", pushes a random character:
 ~       push "~"
  Δ      get the charasters from " " to "~"
   k     remove the 1st character
    ψ    choose a random character from that

I{e{R}¶bH{Re⁾⌡@R¶}}¹∑e⌡k  main program

I                         increase the 1st input - N
 {                }       N times do
  e                         push the variable e, which is here initialised to the next input - W
   { }                      E times do
    R                         execute R
      ¶                     push a newline
       bH                   push b-1, where b is initialised to the next input - H
         {       }          B-1 times do
          R                   execute R
           e⁾                 push e-2 aka width-2
             ⌡@               push that many spaces
               R              execute R
                ¶             push a newline
                   ¹∑     join the stack together
                     e⌡k  remove the first width characters

ランダムな文字を含まない18バイト:/


3

ジャワ8、203 188 168 133 132の 130 128 126バイト

W->H->N->{for(double i=0,j,q;++i<H*N+H;)for(j=W,q=10;j-->=0;q=i%H*j<1|j>W-2?33+Math.random()*94:32)System.out.print((char)q);}

オンラインでお試しください!


133バイト:W->H->N->{for(int i=0,j;i++<H*N+H-1;){char c=10;for(j=W;j-->0;c=i%H<1|j>W-2|j<2?(char)(Math.random()*94+33):32)System.out.print(c);}}
Nevay

現在、の結果を印刷していますがW-1、内側のループは追加の反復(>=0+1バイト)を行う必要があります。
ネベイ

1
132バイト:W->H->N->{for(int i=0,j;i++<H*N+H-1;){char c=10;for(j=W;j-->=0;c=i%H*j<1|j>W-2?(char)(Math.random()*94+33):32)System.out.print(c);}}
Nevay

2
;++i<H*N+H;:-2バイト。
オリビエグレゴワール

3

Haskell226 220 211 190バイト

import System.Random
a=mapM id
b=(putStr.unlines=<<).a
c=randomRIO('!','~')
r w=a$c<$[1..w]
s w=a$c:(return ' '<$[3..w])++[c]
(w#h)0=b$s w<$[2..h]
(w#h)n=do{b$(s w<$[2..h])++[r w];(w#h)$n-1}

オンラインでお試しください!

Laikoniのおかげで9バイト節約

wcharginのおかげで21バイト節約

ゴルフ可能(b$(s w)<$[2..h]およびb$((s w)<$[2..h])++[r w])である必要があります。私はIOとゴルフに不安を感じています。


次のために中置記法を使用できますt w h n= ...(w#h)n= ...pureの代わりに使用できますreturn(d ' ')<$およびの周りに括弧をドロップできます(s w)<$
ライコニ

@Laikoni次回は中置記法を忘れません!ありがとう。
ジェフェラード

1
を使用して大量のバイトを保存します。c=randomRIO('!','~')これにより、インライン化することもできますd=return。また、mapM idは1バイトよりも短いですsequence
wchargin

1
@wcharginありがとう。今日は何かを学びました!
jferard

2

JavaScript(ES6)、144バイト

(w,h,n)=>Array(n+1).fill(("#".padEnd(w-1)+`#
`).repeat(h-1)).join("#".repeat(w)+`
`).replace(/#/g,_=>String.fromCharCode(33+Math.random()*94|0))

#文字からはしごを作成し、それぞれをランダムなASCII文字で置き換えます。

テストスニペット


String.fromCharCodeそしてMath.random、1つのソリューションで-なぜJavaScriptが私たちを嫌うのですか?!思い付いたこのちょうど配列せずに、あなたに非常に似ている、137バイトのために。私は今、再帰的な解決策がまだ短いのではないかと考えています。後で調査します。
シャギー


2

JavaScript(ES6)、129 117バイト

残念ながら、私はこれをゴルフでダウンさせている最中に、アーナウルドは同様の、しかしより短い解決策を打ちました。2つのソリューションを組み合わせると、113バイトになります

末尾の改行が含まれます。

(w,h,n)=>(g=c=>l?(c++<w?c%w>1&&l%h?` `:String.fromCharCode(94*Math.random()+33|0):`
`)+g(c>w?!--l:c):``)(0,l=h*++n-1)

それを試してみてください

o.innerText=(f=
(w,h,n)=>(g=c=>l?(c++<w?c%w>1&&l%h?` `:String.fromCharCode(94*Math.random()+33|0):`
`)+g(c>w?!--l:c):``)(0,l=h*++n-1)
)(i.value=5,j.value=3,k.value=2);oninput=_=>o.innerText=f(+i.value,+j.value,+k.value)
label,input{font-family:sans-serif;font-size:14px;height:20px;line-height:20px;vertical-align:middle}input{margin:0 5px 0 0;padding:0 0 0 5px;width:100px;}
<label for=i>W: </label><input id=i min=3 type=number><label for=j>H: </label><input id=j min=2 type=number><label for=k>N: </label><input id=k min=2 type=number><pre id=o>



1

QBIC、76バイト

[:*:+b-1|G=chr$(_r33,126|)~a%b\[:-2|G=G+@ `]][e|G=G+chr$(_r33,126|)]?_sG,1,e

説明

[                       FOR a = 1 TO
 :                         input 1 (Height, now in var b)
  *                        times
   :                       input 2 (# of rungs, now in var c)
    +b-1|                  plus one bottom rung without crossbar
G=chr$(_r33,126|)       Assign to G a random char (_r is the RAND() function, chr$() is BASIC's num-to-char)
~a%b|                   IF we are not at a crossbar (the modulo returns anything but 0), 
  [:-2|G=G+@ `            add to G x spaces, where x is width (input 3, now 'e') - 2
                        Note that G is now either 'X' or 'X   '  (for rnd char X and W=5)
]]                      Close the spacing FOR, close the IF 
[e|                     FOR f = 1 to width
  G=G+chr$(_r33,126|)]     Append to G a rnd char
                        G is now either 'XXXXXX'  or 'X   XXXXX' (for rnd char X and W=5)
?_sG,1,e                PRINT the first w characters of G, and on to the next line

サンプル実行

Command line: 3 2 5
N   F
M   `
Bj#=y
!   (
S   N
q(.Ho
%   7
g   ,

1

MATL63 50バイト

ルイスメンドーのおかげで-13バイト

Q*qXJ*6Y2HY)wT3$ZrJ3G3$eJ3G&Ol5LZ(J:HG\~3GTX"!+g*c

オンラインでお試しください!

私はまだMATLでゴルフを始めたばかりです(そして、その点でMATLABが得意ではありません)。ヒントは大歓迎です。入力を順番に受け取りますN,H,W

さあ:

Q*qXJ                     # compute H*(N+1)-1, store as J
     *                    # multiply by W
      6Y2HY)              # push printable ASCII
            wT3$Zr        # sample uniformly with replacement
                  J3G3$e  # reshape to make a matrix of the appropriate shape.

これでランダムなcharのマトリックスができました。

J3G                       # push J,W
   &O                     # zero matrix, J x W
     l5LZ(                # assign 1 to first and last columns

また、レール用の論理マトリックスもあります。

J:                        # push J, range, so 1...J
  HG                      # take second input (H)
    \~                    # mod and bool negate (so it's 1 for rows of multiples of H)
      3GTX"!              # repmat and transpose so we have 1's for rungs

スタック上に3つのマトリックスがあります。

  • 上:非ラングの場合は0、それ以外の場合は1
  • 中央:非レールの場合は0、それ以外の場合は1
  • 下:ランダムな文字、-20

そこで、以下を行います

+                         # add the top two matrices.
 g                        # convert to logical so 0->0, nonzero->1
   *                      # elementwise multiply
    c                     # convert to char, implicit output (0 -> space).

ここにいくつかの簡単なヒントがあります:X"3$デフォルトです。...の6Y2代わりに便利かもしれません。です。の代わりに使用できます13:10620+~~gJ3G&Ol5LZ(1F3G2-Y"h1hJT3$X"
ルイスメンドー

@LuisMendoああ、私はすべてのドキュメントを十分に理解していませんでしたX"。その最後のヒントで5L[1 0]、それがどのように使用されるのかわかりませんZ(- 1最初と最後の列に割り当てていることはわかりますが、それを5LZ(達成する方法はわかりません。これについては後ほどMATL CHATLでpingを送信するので、今のところは心配しないでください。
ジュゼッペ

1
インデックス作成はモジュール式であるため0、「終了」と同じです。Z(列に割り当てます。もちろん、チャットで私にpingを送ってください!
ルイスメンドー

1

Powershell、102バイト

param($w,$h,$n)1..(++$n*$h-1)|%{$l=$_%$h
-join(1..$w|%{[char](32,(33..126|Random))[!$l-or$_-in1,$w]})}

ゴルフの少ないテストスクリプト:

$f = {

param($w,$h,$n)
1..(++$n*$h-1)|%{       # for each lines of the ladder
    $l=$_%$h            # line number in a step
    -join(1..$w|%{      # make a line
        [char](32,(33..126|Random))[!$l-or$_-in1,$w]
    })                  # a random character if the line number in a step is a rung line or char position is 1 or width
                        # otherwise a space
}

}

&$f 5 3 2
&$f 3 2 2
&$f 12 4 5
&$f 20 5 3

出力:

0   {
H   S
']UxR
G   ]
3   t
q^R8O
q   y
t   J
U h
YQZ
_ i
3#D
I #
=          m
&          <
]          6
8nmuyw2'Y7%+
o          l
;          !
D          M
Fn[zGfT";RYt
@          B
$          e
z          @
@J[1|:-IS~y<
(          L
:          [
|          q
zBow0T0FnY8)
/          *
e          B
R          p
9{d2(RacBdRj
u          ~
`          l
J          h
v                  t
T                  -
v                  H
'                  Y
IS7{bx2&k@u7]o}>[Vq?
F                  U
?                  U
|                  Q
}                  T
:wv1wEfc6cS;430sigF|
<                  L
:                  }
*                  `
H                  =
L8k5Q/DQ=0XIUujK|c6|
j                  =
!                  p
V                  :
#                  w

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