Mach einen Alphabet-Suchscheinwerfer!


66

Inspiriert von einem Fehler in einer Lösung für diese Herausforderung besteht Ihre Herausforderung darin, genau diesen Text zu erstellen:

                         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
  • Die erste Zeile enthält 25 Leerzeichen, dann das Alphabet ab dem 26. Buchstaben ( ZYXWVUTSRQPONMLKJIHGFEDCBA) rückwärts und dann eine neue Zeile.
  • Die zweite Zeile enthält 24 Leerzeichen, dann das Alphabet ab dem 25. Buchstaben ( YXWVUTSRQPONMLKJIHGFEDCBA) rückwärts und dann eine neue Zeile.
  • ...
  • Die letzte (26.) Zeile enthält keine Leerzeichen, dann das Alphabet rückwärts ab dem 1. Buchstaben ( A), dann eine neue Zeile.

Zusätzliche Regeln:

  • Ihr Programm kann alle zulässigen Ausgabemethoden verwenden.
  • Eine abschließende und / oder eine führende Zeile ist zulässig.
  • Zwischen den Zeilen, die die Buchstaben enthalten, muss ein Zeilenumbruch stehen, nicht mehr.
  • Die Buchstaben müssen in Großbuchstaben geschrieben sein.

Wie beim gewinnt die kürzeste Einreichung. Viel Glück!

Bestenliste:


3
Für mich sieht es aus wie das Licht des Fledermaussignals
Scottinet


Kann jede Zeile ein zusätzliches Leerzeichen enthalten?
HyperNeutrino

3
Kann jede Zeile nach dem letzten Buchstaben ein Leerzeichen enthalten?
Meilen

1
@ Meilen ja, das ist in Ordnung.
MD XF

Antworten:


19

05AB1E , 7 Bytes

Code:

₂žp.s1Λ

Verwendet die 05AB1E- Codierung. Probieren Sie es online!

Erläuterung

 ž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, das ist eine wirklich blöde Regel
DJMcMayhem

3
Hmm ... dann werde ich wohl die Regel entfernen. Status abgeschlossen
MD XF

2
Ich könnte eine PR vorschlagen, die diese Funktion dokumentiert, wenn ich die Zeit finde. Scheint ein guter Weg zu sein, um ein bisschen Python aus einem gut geschriebenen, einfach zu lesenden Code zu
lernen

6
Warum gibt žpes, wenn Aues golden ist? BADUM Taschentücher
Magic Octopus Urn

5
Mit 05AB1E, erstellen Sie eine Datei , die alle davon zu dokumentieren ist Features, gewinnt kürzeste Code: P
Christian

22

R , 67.55 Bytes

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

Probieren Sie es online!


4
R schlägt Python bei einer Saiten-Herausforderung? Nett. +1 für LETTERS
CriminallyVulgar

1
@ CriminallyVulgar es ist eine sehr seltsame Herausforderung; Haskell schlägt das Gleichnis von PHP und R, die beide Python schlagen ... zumindest ist Perl allen voraus, wie Sie vielleicht erwarten.
CR Drost

-2 Bytes , wenn Sie ändern sepzu s. Funktionen vervollständigen benannte Argumente automatisch, wenn keine Kollisionen
vorliegen

1
@Punintended das wird wegen des ...Arguments nicht funktionieren ; Argumente, die ...(normalerweise) vorher kommen, werden teilweise abgeglichen, und solche nachher nicht. Ich glaube, es gibt ein paar Ausnahmen, aber catkeine von ihnen
Giuseppe

@ Giuseppe Ich sehe kein...
MilkyWay90


15

V , 13 , 11 Bytes

¬ZAòY>HGpxl

Probieren Sie es online!

Hexdump:

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

Geschrieben von meinem Handy: 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
Ich mache das auch auf meinem Handy, +1
Stan Strum

12

PowerShell , 42 Byte

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

Probieren Sie es online!

Erläuterung:

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 Bytes

/:/\\\\*//#/: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//\\*/\/\/_____#
\/ //_/     //*#

Probieren Sie es online!

Erläuterung

/// kennt nur einen Befehl, /<pattern>/<substitution>/<text>ersetzt alle Vorkommen von <pattern>in <text>durch <substitution>. Zusätzlich \können zu entkommen Zeichen verwendet werden.

Verkürzter Code zur Vereinfachung:

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

Der erste Befehl /:/\\\\*/ersetzt :mit \\*in dem nachfolgenden Code. Das gibt:

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

Dann /#/\\*E\\*D\\*C\\*B\\*A/ersetzt #mit \*E\*D\*C\*B\*A:

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

Dann /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /ersetzt \*mit //__*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

Hinweis: Ich musste \*für den Ersatz verwenden. Da *ist auch ein Teil der Ersetzung, würde es eine Endlosschleife erzeugen, wenn ich nur ersetze *.

Dann wird der Befehl durch Leerzeichen /_/ /ersetzt _und /*//alles gelöscht *:

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

Der nächste Befehl /#//ersetzt #durch nichts. Da #der Code keine enthält, wird nichts ausgeführt. Dies ist nur hier, um die beiden Ableitungen //vom Anfang des Codes zu entfernen . Diese Blätter

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

Dann wird der Befehl / E//entfernt <space>E, sodass der Code erhalten bleibt

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

Ähnliche / D//entfernt <space>D:

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

/ C//:

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//:

    EDCBA
   DCBA
  CBA
 BA
A
/ 

Und der letzte Befehl ist unvollständig, also macht er nichts:

    EDCBA
   DCBA
  CBA
 BA
A

Gleiche Länge wie die C # - und Brainfuck-Antworten: D
Conor O'Brien

9

Haskell, 53 52 Bytes

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

Probieren Sie es online!

Wie es funktioniert

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

Warum geht das nicht f['Z'..'A']?
Conor O'Brien

1
@ ConorO'Brien: [a..b]Beginnt mit aund sammelt alle Nachfolger ( +1für ganze Zahlen, nächste ASCII-Zeichen für Zeichen usw.) bis zu b. Wenn a > bdies eine leere Liste ist. Sie können jedoch auch den zweiten Wert (der kleiner sein kann) angeben, aus dem ein Inkrement / Dekrement berechnet wird. [1,3..8]-> [1,3,5,7], [15,10..0]-> [15,10,5,0], oder ['Z','Y'..'A']das ist das rückwärts gerichtete Großbuchstaben.
nimi

Ah, ich verstehe jetzt. Vielen Dank!
Conor O'Brien


7

JavaScript (ES6), 83 77 76 Bytes

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

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


Ich wollte Ihnen eine Verbesserung vorschlagen, aber dann wurde mir klar, dass unsere Ansätze sehr unterschiedlich sind. Ich hoffe es macht dir nichts aus.

@ThePirateBay Kein Problem!
Arnauld

7

Gelee , 12 Bytes

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

Probieren Sie es online!

Ø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 Bytes dank Meilen



@LeakyNun Oh richtig cool danke!
HyperNeutrino

Ja, eine andere Verwendung für das Präfix schnell. 12 Bytes, da die Form hier implizit mit der Länge neu geformt wird.
Meilen

@LeakyNun Eigentlich würde das es leider ungültig machen, weil es keine zusätzlichen Leerzeichen geben kann (es würde 2 Bytes dauern, um es zu reparieren)
HyperNeutrino

7

Brainfuck , 105 Bytes

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

Probieren Sie es online!

Minimiert und formatiert:

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

Lesbare Version:

[
  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

Poetisch , 601 Bytes

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 ist ein Esolang, den ich 2018 für ein Klassenprojekt erstellt habe, und ein Brainfuck-Derivat, bei dem die Wortlängen Brainfuck-Befehlen entsprechen (und die Befehle +, -,> und <jeweils einstellige Argumente haben).

Die Tatsache, dass nur die Wortlänge die Befehle diktiert, bedeutet, dass ich technisch gesehen ein Programm hätte erstellen können, das vollständig aus Nicht-Wörtern besteht (dh der Buchstabe X wurde so oft benötigt, mit Leerzeichen zwischen den Wörtern), aber ich wollte ein interessantes machen Free-Vers-Gedicht daraus, ohne unnötige Bytes hinzuzufügen.

Wenn Sie es online ausprobieren möchten (das ist der halbe Punkt des Unterrichtsprojekts), schauen Sie sich meinen Online-Dolmetscher an !


Warum ist das nicht konkurrierend?
Paprika

Die Sprache wurde nach der Herausforderung erstellt.
JosiahRyanW


Hm, dann gibt mir das wohl mehr Motivation, Poetic als Programmiersprache zu verwenden! Heh.
JosiahRyanW

5

05AB1E , 10 Bytes

žpDvÐg<ú,¦

Probieren Sie es online!

Erklärungen:

ž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 Bytes

9 Bytes dank @Massa gespart.

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

Probieren Sie es online!

Erläuterung: 25...0 liegt (wie erwartet) zwischen 25 und 0. Wir durchlaufen diesen Bereich und sagen (= Drucken mit Zeilenvorschub), dass viele Leerzeichen und die Zeichenfolge mit ASCII-Codes ( chrs) von 65 + dieser Zahl ( $_+65...65) vorhanden sind.


1
25...0 ist der kürzere Weg :-)
Massa

versuchen say " "x$_,chrs $_+65...65 for 25...0:-)
Massa

Danke vielmals! Das habe ich nie gewusst! Und die Unterform ist auch besser (schade, dass ich diese von oben gemacht habe). (Aus diesem Grund verwende ich gerne Perl 6 für Codegolf. Ich entdecke immer etwas Neues.)
Ramillies

4

Holzkohle , 19 11 Bytes

-8 Bytes nur dank ASCII.

F²⁶«P⮌…α⊕ι↗

Probieren Sie es online! Link ist zur ausführlichen Version.



Warten Sie noooooo es gibt führenden Raum
ASCII-only

Sohn eines ... Ich muss jeden einzelnen Befehl und Operator durchsehen, den Charcoal hat. > _> Danke!
Totalhuman


1
@ Nur ASCII CycleChop... aber du hast vergessen Increment(oder wie es heißt)
Erik der Outgolfer

4

Perl 5 , 36 Bytes

35 Byte Code + 1 für -p.

$\=$"x$-++.($a=$_.$a).$/.$\for A..Z

Hinweis : TIO unterstützt keinen leeren Eingang , so dass ein Newline vorgesehen ist, führt dies zu einem fremden Newline, aber wenn auf Befehlszeile mit leerer Eingabe ausgeführt wird , dies wird nicht angezeigt.

Probieren Sie es online!



4

Cubix , 43 46 Bytes

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

Probieren Sie es online!

Cubified

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

Schau es dir an

Habe es geschafft, ein paar mehr davon zu rasieren, aber es war ein bisschen schwieriger als ich dachte. Nach dem ersten Zitat gibt es ein Ersatzzeichen, das mir 26 gibt.

  • '<sub> Schieben Sie 26 als Basisnummer auf den Stapel
  • :(! Basis als Zähler duplizieren, dekrementieren, auf Wahrheit prüfen
  • ubei true den $befehl überspringen und nach rechts wenden
    • So;u Drücke 32, gebe als Zeichen aus, drücke 32 und drehe nach rechts auf die Senkung
  • $bei falschem Sprung der nächste uBefehl
  • ;:'@^ Pop, duplizieren Sie die Basisnummer, schieben Sie 64 auf Stapel und leiten Sie in eine quälende Route um
  • $\s/:\/u;$Dies ist die Reihenfolge der Schritte auf der Oberseite. Es läuft darauf hinaus, den Zähler gegen den 64 auszutauschen. Zum Schluss überspringen Sie die Umleitung, die ihn hierher gebracht hat.
  • <+o;U umleiten, hinzufügen, Zeichen ausgeben, Pop, nach links wenden
  • (!Dekrementieren, auf Wahrheit prüfen. Wenn wahr, beginnt ein Pfad, der die Kehrtwende trifft und zur Umleitung zurückkehrt.
  • |(;No auf false, Reflect, Redundant Test, Redundant Decrement, Pop, Push 10 und Ausgabezeichen
  • ;;(u!@WGehe zur Basis, dekrementiere, wende dich nach rechts zum Wahrheitstest, halte an, wenn falsch, wechsle andernfalls die Spur auf das Duplikat am Anfang. Spülen und wiederholen.

4

Python, 83 Bytes

[print(' '*i+''.join([chr(64+i)for i in range(i+1,0,-1)]))for i in range(25,-1,-1)]

Meine erste Antwort auf Codegolf :)


1
Ein verspätetes Willkommen bei PPCG! gute Antwort!
Conor O'Brien



3

JavaScript, 75 74 Bytes

Dank Rick Hitchcock 1 Byte gespart

f=(a=65,b='',c)=>a>90?'':f(a+1,b+' ',c=String.fromCharCode(a)+[c])+`
`+b+c

Probieren Sie es online!


Speichern Sie ein Byte, indem Sie initialisieren b( b='') und dann bdie eckigen Klammern entfernen.
Rick Hitchcock

@ RickHitchcock. Vielen Dank.

3

Perl 5 , 49 Bytes

$_=$"x26 .join'',reverse A..Z,Z;say while s/ \S//

Probieren Sie es online!


Sieht so aus, als ob Sie den ersten vermissen A, aber anscheinend kann dies durch Ändern $"x25von behoben werden $"x26!
Dom Hastings

Als ich das Extra hinzufügte Z, vergaß ich, das zu berücksichtigen.
Xcali

3

Pyke , 8 Bytes

G_.<XFo}h-

Probieren Sie es hier aus!

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

Ich kann sehen, dass die richtige Sprache dies in 6 Bytes tut, wenn sie ein eingebautes für prepend n spaces to stringsowie was Pyke tut


3

PHP ( 63 58 55 Bytes)

Dies ist möglicherweise meine seltsame Lieblingsecke von PHP, eine Ecke, die es von Perl erbt:

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

Dies gibt die nachfolgende Newline aus, wie dies ausdrücklich erlaubt ist. Dies kann ausgeführt werden php -r, um die Öffnung zu speichern, die <?phpzum Einfügen in eine Datei erforderlich ist.

Erläuterung: Wenn eine Variable, die die Zeichenfolge enthält, 'A'in PHP inkrementiert wird, wird sie zu 'B'und dann 'C'und so weiter, bis 'Z'wird 'AA'. 'A'In dieser Madcap - Algebra gibt es zu Beginn noch keine Ziffer , und der Dekrementierungsoperator macht sie nicht rückgängig. Daher speichern wir das inkrementell umgekehrte Alphabet unter $z(das sich NULLbeim Verketten mit einer Zeichenfolge standardmäßig auf die leere Zeichenfolge verhält) das gleiche passiert mit $sund $q). Whitespace wird in akkumuliert $sund der gesamte String wird in Variablen rückwärts akkumuliert, $qwas bedeutet, dass wir ihn am Ende wiedergeben müssen.

Vielen Dank an Titus , der mir gesagt hat, dass ich keine Strafe für Inline-Evaluierungs-Flags wie nehmen muss -r.


1
Das sind 57 Bytes, wenn Sie einen Linux-Zeilenumbruch verwenden. -rist gratis. Zwei Bytes kürzer:for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
Titus

@ Titus Danke, gab Ihnen ein Lob in der Antwort.
CR Drost

nm. Beachten Sie, dass nur -Rund -Fsind nicht frei. Siehe codegolf.meta.stackexchange.com/questions/2424/…
Titus

Ich glaube, Sie können ein Byte speichern, wenn Sie verwenden $c<AA.
Ismael Miguel

1
@IsmaelMiguel sorry, ich war zu knapp. Ich dachte, als ich das schrieb: "Vielleicht gibt es eine Möglichkeit, Dinge durcheinander zu bringen, ohne Bytes zu gewinnen, so dass der A-Fall zuerst auftritt und wir dann AA gegen B erkennen können, aber ich glaube nicht, dass ich schlau genug bin, es zu sehen . " Ich wollte nicht leichtfertig sein und ich werde versuchen, in Zukunft darauf zu achten.
CR Drost

3

Nur neugierig, wie lange ist die komprimierte Version?
Caird Coinheringaahing

@cairdcoinheringaahing TL; DR viel zu lang. Die SOGL-Komprimierung saugt (und ist speziell für) sich wiederholende Dinge. Es ist sehr schwer zu sagen, da die Komprimierung nicht automatisiert ist (die Automatisierung würde 701 choose xVersuche für eine beliebige Ganzzahl x
erfordern


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.