アルファベットサーチライトを作ろう!


66

この課題に対するソリューションのバグに触発され、あなたの課題はこの正確なテキストを作成することです:

                         ZYXWVUTSRQPONMLKJIHGFEDCBA
                        YXWVUTSRQPONMLKJIHGFEDCBA
                       XWVUTSRQPONMLKJIHGFEDCBA
                      WVUTSRQPONMLKJIHGFEDCBA
                     VUTSRQPONMLKJIHGFEDCBA
                    UTSRQPONMLKJIHGFEDCBA
                   TSRQPONMLKJIHGFEDCBA
                  SRQPONMLKJIHGFEDCBA
                 RQPONMLKJIHGFEDCBA
                QPONMLKJIHGFEDCBA
               PONMLKJIHGFEDCBA
              ONMLKJIHGFEDCBA
             NMLKJIHGFEDCBA
            MLKJIHGFEDCBA
           LKJIHGFEDCBA
          KJIHGFEDCBA
         JIHGFEDCBA
        IHGFEDCBA
       HGFEDCBA
      GFEDCBA
     FEDCBA
    EDCBA
   DCBA
  CBA
 BA
A
  • 最初の行には25個のスペースがあり、アルファベットは26番目の文字(ZYXWVUTSRQPONMLKJIHGFEDCBA)から後方に向かって、次に改行があります。
  • 2番目の行には24個のスペースがあり、アルファベットは25番目の文字(YXWVUTSRQPONMLKJIHGFEDCBA)から後方に向かって、次に改行があります。
  • ...
  • 最後の(26番目の)行にはスペースがなく、1番目の文字(A)から後方にアルファベットが、次に改行があります。

追加のルール:

  • プログラムは、許可されている出力方法を使用できます。
  • 1つの末尾の改行および/または1つの先頭の改行が許可されます。
  • 文字を含む行の間に改行が1つだけ存在する必要があります。
  • 文字はすべて大文字でなければなりません。

同じように、最短提出が勝ちます。幸運を!

リーダーボード:


3
私には、コウモリの信号によって投光される光のように見えます
スコチネット


各行の前にスペースを追加できますか?
ハイパーニュートリノ

3
最後の文字の後に各行の末尾にスペースがありますか?
マイル

1
@マイルはい、それで結構です。
MD XF

回答:


19

05AB1E、7バイト

コード:

₂žp.s1Λ

05AB1Eエンコードを使用します。オンラインでお試しください!

説明

 žp.s      # Get the suffixes of ZYX...CBA
      Λ    # Using the canvas mode, print the
₂          # first 26 elements of the array
     1     # into the upper-right direction

2
@MDXF IMO、それは本当に馬鹿げたルールです
DJMcMayhem

3
うーん...私は、ルールを削除すると思います。ステータス完了
MD XF

2
時間を見つけたら、その機能を文書化したPRを提案するかもしれません。よく書かれた読みやすいコードからpythonを少し学ぶ良い方法のようです
スコッティネット

6
なぜ黄金はžpいつ存在するのAuか?バダム tissss-
魔法のタコ

5
05AB1Eを使用して、すべての機能を文書化したファイルを作成し、コードが勝ちます:P
Christian

22

R67 55バイト

for(i in 26:1)cat(rep(" ",i-1),LETTERS[i:1],"
",sep="")

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


4
Rは文字列チャレンジでPythonを打ち負かしていますか?いいね LETTERSの+1
CriminallyVulgar

1
@CriminallyVulgarそれは非常に奇妙な挑戦です。Haskellは、どちらもPythonを破っているPHPとRの同点を破っています...少なくともPerlは、あなたが期待するように、それらすべてよりも先を行っています。
CR Drost

に変更sepする場合は-2バイトs。衝突がない場合、関数は名前付き引数を自動補完します
18年

1
...引数のために機能しない@Punintended 。...(通常)前に来る引数は部分的に一致し、後の引数は一致しません。いくつかの例外はあると思いますがcat、それらの例外ではありません
ジュゼッペ

@ジュゼッペが見えない...
MilkyWay90


15

V13、11のバイト

¬ZAòY>HGpxl

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

Hexdump:

00000000: ac5a 41f2 593e 4847 7078 6c              .ZA.Y>HGpxl

私の電話から書かれた:P。

¬ZA         " Insert the alphabet backwards
   ò        " Recursively:
    Y       "   Yank this current line
     >H     "   Add one space to every line
       G    "   Move to the last line in the buffer
        p   "   Paste the line we yanked
         x  "   Delete one character
          l "   Move one character to the right, which will throw an error on 
            "   the last time through, breaking the loop

1
私も電話でこれらを行います。+ 1
スタンストラム

12

PowerShell、42バイト

25..0|%{' '*$_+-join[char[]]((65+$_)..65)}

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

説明:

25..0|%{                                 } # Loop from 25 to 0
                             (65+$_)..65   # Construct a range of the specific ASCII codes
                    [char[]](           )  # Cast that as a character array
               -join                       # that has been joined together into a string
        ' '*$_+                            # Prepended with the correct amount of spaces


10

///105 97バイト

/:/\\\\*//#/:Z:Y:X:W:V:U:T:S:R:Q:P:O:N:M:L:K:J:I:H:G:F:E:D:C:B:A//\\*/\/\/_____#
\/ //_/     //*#

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

説明

///だけ、一つのコマンドを知っている/<pattern>/<substitution>/<text>のすべての出現を置き換え<pattern><text><substitution>。さらに、\文字をエスケープするために使用できます。

簡略化のためにコードを短縮:

/:/\\\\*//#/:E:D:C:B:A//\\*/\/\/__#
\/ //_/  //*#

最初のコマンド/:/\\\\*/は、後続のコードで置き換え:られ\\*ます。これは与える:

/#/\\*E\\*D\\*C\\*B\\*A//\\*/\/\/__#
\/ //_/  //*#

その後、次の/#/\\*E\\*D\\*C\\*B\\*A/ものに置き換え#られ\*E\*D\*C\*B\*Aます。

/\\*/\/\/__\*E\*D\*C\*B\*A
\/ //_/  //*\*E\*D\*C\*B\*A

その後、次の/\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /ものに置き換え\*られ//__*E*D*C*B*A<newline>/ます。

/_/  //*//__*E*D*C*B*A
/ E//__*E*D*C*B*A
/ D//__*E*D*C*B*A
/ C//__*E*D*C*B*A
/ B//__*E*D*C*B*A
/ A

通知:\*交換に使用する必要がありました。*は置換の一部でもあるため、を置き換えるだけの場合は無限ループを生成します*

次に、コマンド/_/ /_スペースに置き換えられ、/*//すべて削除されます*

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ A

次のコマンド/#//#何も置き換えません。#コードにはないので、何もしません。これは//、コードの先頭から2つの先頭を削除するためだけです。これは去る

EDCBA
/ E//    EDCBA
/ D//    EDCBA
/ C//    EDCBA
/ B//    EDCBA
/ 

その後、コマンド/ E//はを削除<space>Eするため、コードはそのままになります

    EDCBA
   DCBA
/ D//   DCBA
/ C//   DCBA
/ B//   DCBA
/ 

同様の/ D//削除<space>D

    EDCBA
   DCBA
  CBA
/ C//  CBA
/ B//  CBA
/ 

/ C//

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//

    EDCBA
   DCBA
  CBA
 BA
A
/ 

そして最後のコマンドは不完全なので、何もしません:

    EDCBA
   DCBA
  CBA
 BA
A

C#と同じ長さでブレインファックの回答:D
コナーオブライエン

9

Haskell、53 52バイト

f(a:b)=(b>>" ")++a:b++'\n':f b
f x=x
f['Z','Y'..'A']

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

使い方

f['Z','Y'..'A']        -- call f with the full backwards alphabet

f(a:b)=                -- let `a` be the first char and `b` the rest. Return
   (b>>" ") ++         -- replace each char in b with a space, followed by
   a:b ++              -- the input string, followed by
   '\n' :              -- a newline, followed by
   f b                 -- a recursive call of `f` with `b`
f x=x                  -- stop on an empty input string

なぜ機能しないのf['Z'..'A']ですか?
コナーオブライエン

1
@ ConorO'Brien:で[a..b]始まり、aすべての後続オブジェクト(+1整数の場合、文字の場合は次のascii-charなど)までを収集しbます。a > bこれが空のリストの場合。ただし、増分/減分が計算される2番目の値(より小さい場合もあります)も指定できます。 [1,3..8]-> [1,3,5,7][15,10..0]-> [15,10,5,0]、または['Z','Y'..'A']後方大文字のアルファベット。
nimi

ああ、なるほど。ありがとう!
コナーオブライエン

8

Pythonの266 64

i=26
while i:i-=1;print' '*i+'ZYXWVUTSRQPONMLKJIHGFEDCBA'[25-i:]

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


1
プログラミングパズルとコードゴルフへようこそ-最初の回答です。
MD XF

2
ありがとう!ただ潜んでいるのではなく、試してみようと考えました。
Artemis_134

2
あなたは、間にスペースを削除することができますprintし、'65バイトのために。
ミスターXcoder

私が見て、Pythにあなたの答えを移植:codegolf.stackexchange.com/a/141939/63757
スタン・ストラム

7

JavaScript(ES6)、83 77 76バイト

f=(n=0,p='')=>n<26?f(++n,p+' ')+p+`ZYXWVUTSRQPONMLKJIHGFEDCBA
`.slice(~n):''

o.innerText = f()
<pre id=o>


私はあなたに改善を提案したかったのですが、その後、私たちのアプローチは非常に異なっていることに気付きました。気にしないでください。

@ThePirateBay問題ありません!
アーナルド

7

ゼリー、12バイト

ØAµ⁶ṁḊ;ṚµƤṚY

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

ØAµ⁶ṁḊ;ṚµƤṚY  Main Link
ØA            "ABC...XYZ"
         Ƥ    For each prefix,
  µ⁶ṁḊ;Ṛµ     Monadic Link
   ⁶          ' '
    ṁ         (with automatic repetition) molded to the shape of
     Ḋ        All but the first letter of the input (repeat - 1)
      ;       With the input          appended to it
       Ṛ                     reversed
           Y  Join on newlines

マイルのおかげで-3バイト



@LeakyNunああ、ありがとうございます!
ハイパーニュートリノ

イェイ、接頭辞のもう1つの使用法です。ここでは、暗黙的に長さを使用してカビが形を変えるため、12バイトです。
マイル

@LeakyNun実際には、残念ながら、余分なスペースがないため無効になります(修正するには2バイトかかります)
HyperNeutrino

7

brainfuck、105バイト

++++++++[>+>+++++++++++>++++>+++<<<<-]>++>++>>++[[->+>+<<]>-[-<<.>>]>[-<<<<.->>>+>]<-[-<+<<+>>>]<<<<.>>>]

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

縮小およびフォーマット:

++++++++[>+>+++
++++++++>++++>+
++<<<<-]>++>++>
>++[[->+>+<<]>-
[-<<.>>]>[-<<<<
.->>>+>]<-[-<+<
<+>>>]<<<<.>>>]

読み取り可能なバージョン:

[
  pre-initialize the tape with the values 10 90 32 >26<
  C_NEWLINE: 10
  V_ALPHA: 90
  C_SPACE: 32
  V_COUNTER: 26

AS:

  10 = 8 *  1 + 2
  90 = 8 * 11 + 2
  32 = 8 *  4 + 0
  26 = 8 *  3 + 2
]

8 ++++++++ [
  *  1 >+
  * 11 >+++++++++++
  *  4 >++++
  *  3 >+++
<<<<-]
PLUS 2 >++
PLUS 2 >++
PLUS 0 >
PLUS 2 >++

UNTIL V_COUNTER == 0 [
  COPY V_COUNTER to RIGHT and RIGHT_RIGHT
  [->+>+<<]
  TAPE: 10 V_ALPHA 32 >0< V_COUNTER_R V_COUNTER_RR
  V_COUNTER_R SUB 1 TIMES: >-[-
     PRINT C_SPACE <<.
  >>]
  TAPE: 10 V_ALPHA 32 0 >0< V_COUNTER_RR
  V_COUNTER_RR TIMES: >[-
    PRINT V_ALPHA <<<<.
    DECREMENT V_ALPHA -
    INCREMENT V_COUNTER_R >>>+
  >]
  TAPE: 10 V_ALPHA 32 0 V_COUNTER_R(26) >0<
  V_COUNTER_R SUB 1 TIMES: <-[-
    INCREMENT V_COUNTER <+
    INCREMENT V_ALPHA <<+
  >>>]
  PRINT C_NEWLINE <<<<.
>>>]


6

詩的、601バイト

one night i camped a bit
throughout all the forest now
the sweet sights
i saw giant things
i saw little small things
here i am
seated around all my trees i saw
i sleep
i sle-e-p
sleep in a cabin
i am sleep-y
i sleep a bit
i awaken in bed
i stand
i walk
i am ready
i saw a vision of a dragon
i am fooled
i know i am
should i f-ight
i f-light
i did f-light
i did a flight
go away,i do imply
i*m afraid
i run
i leave
i flee
i am timid
i*m just a person,not toughie-tough-guy
no,never
i*m waste
i am stupid
a quitter i was
i am stupid
i*m turning around
i do not appreciate camping
i cry
i am crying
no
no

Poeticは、2018年にクラスプロジェクト用に作成したエソランであり、単語の長さがBrainfuckコマンドに対応するBrainfuck派生物です(+、-、>、および<コマンドにはそれぞれ1桁の引数があります)。

単語の長さだけがコマンドを決定するという事実は、技術的には単語以外で完全に構成されるプログラムを作成できたことを意味します(つまり、単語Xを必要な回数だけ、単語間にスペースを入れて)。不要なバイトを追加せずに、そこから自由詩を取り出します。

オンラインで試してみたい場合(クラスプロジェクトの最初の半分のポイントです)、私のオンラインインタープリターをチェックしください!


なぜこれが競合しないのですか?
pppery

言語はチャレンジ後に作成されました。
JosiahRyanW


ええと、それは私がPoeticをプログラミング言語として使用するより多くの動機を与えると思います!へえ。
JosiahRyanW

5

05AB1E、10バイト

žpDvÐg<ú,¦

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

説明:

žpDvÐg<ú,¦
žp           Push the uppercased alphabet, reversed
  D          Duplicate
   v         For each letter (we just want to loop 26 times, so we use the 
                already pushed alphabet for that purpose)
    Ð        Triplicate
     g<      Length of the string - 1
       ú     Add that number of spaces at the beginning of the string
        ,    Print with newline
         ¦   Remove the 1st element of the remaining copy of the string

5

Perl 6、37バイト

@Massaのおかげで9バイト節約されました。

say " "x$_,chrs $_+65...65 for 25...0

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

説明: 25...025〜0の範囲です(予想どおり)。その範囲を反復し、多くのスペースと、ASCIIコード(chrs)から65 +その数字($_+65...65)までの文字列を(=改行で印刷する)と言います。


1
25...0 短い方法です:-)
マッサ

試してくださいsay " "x$_,chrs $_+65...65 for 25...0:-)
マッサ

どうもありがとう!私はそれについて決して知りませんでした!また、サブフォームの方が優れています(頭の上部から作成したのは残念です)。(これが、私がcodegolfにPerl 6を使用するのが好きな理由です。私はいつも何か新しいことを発見します。)
Ramillies

4

19 11バイト

ASCIIのみのおかげで-8バイト。

F²⁶«P⮌…α⊕ι↗

オンラインでお試しください!リンクは詳細バージョンです。



先行スペースがあるので待ってください
ASCIIのみ

息子の...私はチャコールが持っているすべての単一のコマンドと演算子を調べる必要があります。> _>ありがとう!
完全に人間


1
CycleChopIncrement
@ASCII



4

Cubix、43 46バイト

$/\;u:\s/':(!$u;:'@^!@Wu;oSU;o+<u(;;oN;(!|

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

立方体

      $ / \
      ; u :
      \ s /
'  : ( ! $ u ; : ' @ ^
! @ W u ; o S U ; o + <
u ( ; ; o N ; ( ! | . .
      . . .
      . . .
      . . .

実行を見る

これをもう少し削ることができましたが、思ったよりも少し難しくなりました。最初の引用の後に26を与える代替文字があります。

  • '<sub> 26をベース番号としてスタックにプッシュします
  • :(! カウンターとしてのベースの複製、減少、真実性のテスト
  • utrueの場合、$コマンドをスキップして右にuターンします
    • So;u 32を押して、文字として出力し、32をポップし、右折してデクリメントへ
  • $誤ってジャンプすると次のuコマンド
  • ;:'@^ ポップし、ベース番号を複製し、64をスタックにプッシュし、曲がりくねったルートにリダイレクトします
  • $\s/:\/u;$これは、上面のステップの順序です。カウンターを64に交換するために煮詰めます。ここに置かれたリダイレクトをスキップして終了します。
  • <+o;U 追加、出力文字、ポップ、Uターン左へのリダイレクト
  • (!デクリメント、真実性のテスト。trueの場合、uターンにヒットしてリダイレクトに戻るパスで開始します。
  • |(;No false、リフレクト、冗長テスト、冗長デクリメント、ポップ、プッシュ10および出力文字
  • ;;(u!@W基本数までポップダウンし、デクリメントし、真偽テストで右折し、falseの場合は停止します。すすぎ、繰り返します。






3

Pyke、8バイト

G_.<XFo}h-

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

           -  o = 0
G_         -    reversed(alphabet)
  .<       -   suffixes(^)
    XF     -  for i in ^:
      o    -      o++
       }   -     ^ * 2
        h  -    ^ + 1
         - -   i.lpad(" ", ^)
           - for i in reversed(^):
           -  print i

prepend n spaces to stringPykeが行うことと同様に組み込みの機能があれば、6バイトでこれを行う正しい言語を見ることができます。


3

PHP(63 58 55バイト)

これはおそらく、Perlから継承する、私のお気に入りのPHPの奇妙なコーナーです。

for($c=A;$c!=AA;$q="$s$z 
$q",$s.=" ")$z=$c++.$z;echo$q;

これは、明示的に許可されているように、末尾の改行を出力します。これを実行しphp -rて、<?phpこれをファイルに入れるために必要な開口部を保存できます。

説明:文字列を含む変数は時に'A'PHPにインクリメントされ、それがなっ'B'た後、'C'というようにまで'Z'なりました'AA''A'このmadcap代数には開始する前に数字がなく、減分演算子は元に戻さないため、増分的に反転したアルファベットを保存します$z(デフォルトNULLでは、文字列と連結されたときに空の文字列のように動作します- $s$q)でも同じことが起こります。空白が蓄積され$s、文字列全体が変数に後方に蓄積されます$q。つまり、最後にエコーする必要があります。

中かっこでゴルフをして、インライン評価フラグのようにペナルティを受ける必要がないと言ってくれたTitusに感謝します-r


1
Linuxの改行を使用する場合、57バイトです。-r無料。2バイト短縮:for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
タイタス

@タイタスのおかげで、答えに賞賛を与えました。
CRドロス

nm。それに注意し-R、無料で-Fはありませんcodegolf.meta.stackexchange.com/questions/2424/…を
タイタス

を使用すると、1バイト節約できると思います$c<AA
イスマエルミゲル

1
@IsmaelMiguel申し訳ありませんが、私はあまりにも簡潔でした。「バイトを獲得せずに物事をシャッフルする方法があり、Aケースが最初に発生し、その後AA対Bを検出できるかもしれないが、それを見るのに十分賢いとは思わない」 」私は軽んじるつもりはなかったので、将来は気をつけようとします。
CR Drost

3

ちょうど好奇心、圧縮バージョンはどれくらいですか?
ケアード共編

@cairdcoinheringaahing TL; DRが長すぎます。SOGLの圧縮は、繰り返しのあるものを吸い込みます(特に、専用ではありません)。圧縮が自動化されていないため(自動では701 choose x任意の整数xの試行が行われるため)分かりにくいですが、大まかな試行は450バイトでした:P
dzaima


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