Zrób reflektor alfabetyczny!


66

Zainspirowany błędem w rozwiązaniu tego wyzwania , Twoim zadaniem jest napisanie dokładnego tekstu:

                         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
  • Pierwszy wiersz będzie zawierał 25 spacji, następnie alfabet do tyłu, zaczynając od 26 litery ( ZYXWVUTSRQPONMLKJIHGFEDCBA), a następnie nowy wiersz.
  • Drugi wiersz będzie zawierał 24 spacje, następnie alfabet do tyłu, zaczynając od 25. litery ( YXWVUTSRQPONMLKJIHGFEDCBA), a następnie nowy wiersz.
  • ...
  • Ostatni (26) wiersz nie będzie zawierał spacji, następnie alfabet do tyłu, zaczynając od pierwszej litery ( A), a następnie nowego wiersza.

Dodatkowe zasady:

  • Twój program może używać dowolnych dozwolonych metod wyjściowych.
  • Dozwolona jest jedna nowa linia i / lub jedna nowa linia.
  • Musi być jedna nowa linia między wierszami zawierającymi litery, nie więcej.
  • Wszystkie litery muszą być wielkie.

Podobnie jak w przypadku , wygrywa najkrótsza przesyłka. Powodzenia!

Tabela liderów:


3
Dla mnie wygląda to jak światło rzucane przez sygnał nietoperza
scottinet


Czy każda linia może mieć przed sobą dodatkową przestrzeń?
HyperNeutrino,

3
Czy każda linia może zawierać końcowe spacje po ostatniej literze?
mile

1
@miles tak, w porządku.
MD XF,

Odpowiedzi:


19

05AB1E , 7 bajtów

Kod:

₂žp.s1Λ

Wykorzystuje kodowanie 05AB1E . Wypróbuj online!

Wyjaśnienie

 ž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, to naprawdę głupia zasada
DJMcMayhem

3
Hmm ... chyba usunę regułę. status ukończony
MD XF

2
Mogę zaproponować PR dokumentujący tę funkcję, kiedy znajdę czas. Wydaje się być dobrym sposobem na nauczenie się trochę pytona z dobrze napisanego, łatwego do odczytania kodu
scottinet,

6
Dlaczego žpistnieje, kiedy Aujest złoty? BADUM chusteczki
Magic Octopus Urn

5
Korzystając z 05AB1E, utwórz plik dokumentujący wszystkie jego funkcje, skraca kod wygrywa: P
Christian

22

R , 67 55 bajtów

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

Wypróbuj online!


4
R pokonuje Pythona w wyzwaniu strunowym? Miły. +1 za LITERY
Kryminalnie

1
@ CrrallyVulgar to bardzo dziwne wyzwanie; Haskell pokonuje remis PHP i R., które oba pokonują Python ... przynajmniej Perl wyprzedza je wszystkie, jak można się spodziewać.
CR Drost

-2 bajty, jeśli zmienisz sepna s. Funkcje będą automatycznie
uzupełniać

1
@Zaplanowane, że nie zadziała z powodu ...argumentu; argumenty, które pojawiają się przed ...(zwykle) są częściowo dopasowane, a te po nim nie. Uważam, że jest kilka wyjątków, ale catnie jest jednym z nich
Giuseppe

@Giuseppe Nie widzę...
MilkyWay90


15

V , 13 , 11 bajtów

¬ZAòY>HGpxl

Wypróbuj online!

Hexdump:

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

Napisane z mojego telefonu: 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
Robię to również na telefonie, +1
Stan Strum

12

PowerShell , 42 bajty

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

Wypróbuj online!

Wyjaśnienie:

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 bajtów

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

Wypróbuj online!

Wyjaśnienie

/// zna tylko jedno polecenie, /<pattern>/<substitution>/<text>zastępuje wszystkie wystąpienia <pattern>w <text>z <substitution>. Dodatkowo \można użyć do ucieczki postaci.

Skrócony kod dla uproszczenia:

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

Pierwsze polecenie /:/\\\\*/zastępuje :się \\*w kolejnym kodzie. To daje:

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

Następnie /#/\\*E\\*D\\*C\\*B\\*A/zastępuje #się \*E\*D\*C\*B\*A:

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

Następnie /\\*/\/\/__\*E\*D\*C\*B\*A<newline>\/ /zastępuje \*się //__*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

Uwaga: Musiałem użyć \*do wymiany. Ponieważ *jest również częścią podstawienia, wygenerowałbym nieskończoną pętlę, jeśli tylko ją zastąpię *.

Następnie polecenie /_/ /zastępuje _spacjami i /*//usuwa wszystkie *:

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

Następne polecenie /#//zastępuje #nic. Ponieważ nie ma #kodu, nic nie robi. Jest to tutaj, aby usunąć dwa wiodące elementy //na początku kodu. To opuszcza

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

Następnie polecenie / E//usuwa <space>E, więc kod pozostanie

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

Podobne / D//usuwa <space>D:

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

/ C//:

    EDCBA
   DCBA
  CBA
 BA
/ B// BA
/ 

/ B//:

    EDCBA
   DCBA
  CBA
 BA
A
/ 

Ostatnie polecenie jest niekompletne, więc nic nie robi:

    EDCBA
   DCBA
  CBA
 BA
A

Te same długości, co odpowiedzi C # i bzdury: D
Conor O'Brien

9

Haskell, 53 52 bajty

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

Wypróbuj online!

Jak to dział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

Dlaczego nie f['Z'..'A']działa?
Conor O'Brien,

1
@ ConorO'Brien: [a..b]rozpoczyna się ai zbiera wszystkie następców ( +1dla liczb całkowitych, obok ASCII-char do znaków itp) aż do b. Jeśli a > bto jest pusta lista. Można jednak określić również drugą wartość (która może być mniejsza), na podstawie której obliczany jest przyrost / spadek. [1,3..8]-> [1,3,5,7], [15,10..0]-> [15,10,5,0]lub ['Z','Y'..'A']który jest alfabetem wielkich liter do tyłu.
nimi

Ach, rozumiem teraz. Dzięki!
Conor O'Brien,


7

JavaScript (ES6), 83 77 76 bajtów

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

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


Chciałem zasugerować ci poprawę, ale potem zdałem sobie sprawę, że nasze podejście jest bardzo różne. Mam nadzieję, że nie masz nic przeciwko.

@ThePirateBay Nie ma problemu!
Arnauld,

7

Galaretka , 12 bajtów

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

Wypróbuj 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 bajty dzięki milom



@LeakyNun O racja fajne dzięki!
HyperNeutrino,

Tak, kolejne użycie szybkiego prefiksu. 12 bajtów, ponieważ pleśń zmieni się tutaj, używając domyślnie długości.
mile

@LeakyNun W rzeczywistości niestety spowodowałoby to nieważność, ponieważ nie może być dodatkowych spacji (zajęłoby to 2 bajty)
HyperNeutrino

7

pieprzenie mózgu , 105 bajtów

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

Wypróbuj online!

Zminimalizowane i sformatowane:

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

Wersja do odczytu:

[
  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

Poetycki , 601 bajtów

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 to esolang, który stworzyłem w 2018 roku dla projektu klasowego, i jest to pochodna od pieprzenia mózgu, w której długości słów odpowiadają komendom (i komendy +, -,> i <mają 1-cyfrowe argumenty).

Fakt, że tylko długość słowa dyktuje polecenia, oznacza, że ​​technicznie mogłem stworzyć program całkowicie złożony z nie-słów (tj. Litera X tyle razy, ile potrzeba, ze spacjami między słowami), ale chciałem zrobić ciekawy z wiersza wolnego wiersza, nie dodając niepotrzebnych bajtów.

Jeśli chcesz wypróbować go online (co jest w połowie punktem projektu klasowego), sprawdź mojego tłumacza online !


Dlaczego to nie konkuruje?
pppery

Język powstał po wyzwaniu.
JosiahRyanW


Hm, więc myślę, że to daje mi większą motywację do używania Poetic jako języka programowania! Heh
JosiahRyanW

5

05AB1E , 10 bajtów

žpDvÐg<ú,¦

Wypróbuj online!

Objaśnienia:

ž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 bajtów

Zaoszczędź 9 bajtów dzięki @Massa.

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

Wypróbuj online!

Objaśnienie: 25...0 jest w zakresie od 25 do 0 (zgodnie z oczekiwaniami). Iterujemy w tym zakresie, mówiąc (= drukuj przy użyciu nowej linii), że wiele spacji i ciąg znaków, które mają kody ASCII ( chrs) od 65 + ta liczba ( $_+65...65).


1
25...0 jest krótsza droga :-)
Massa

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

Wielkie dzięki! Nigdy o tym nie wiedziałem! A forma podrzędna też jest lepsza (szkoda, że ​​zrobiłem ją ze szczytu głowy). (Dlatego lubię używać Perla 6 do gry w codegolf, zawsze odkrywam coś nowego.)
Ramillies,

4

Węgiel drzewny , 19 11 bajtów

-8 bajtów dzięki tylko ASCII.

F²⁶«P⮌…α⊕ι↗

Wypróbuj online! Link jest do pełnej wersji.



Poczekaj noooooo jest wiodąca przestrzeń
tylko ASCII

Syn… Muszę przejrzeć każde polecenie i operator, jaki posiada Charcoal. > _> Dzięki!
całkowicieludzki

Naprawiono tio.run/…
tylko ASCII

1
@ Tylko ASCII CycleChop... ale zapomniałeś Increment(lub jak to się nazywa)
Erik Outgolfer

4

Perl 5 , 36 bajtów

Kod 35 bajtów + 1 dla -p.

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

Uwaga : TIO nie obsługuje pustych danych wejściowych , dlatego wprowadzono nowy wiersz, co powoduje powstanie nowej linii pomocniczej , ale podczas uruchamiania w wierszu polecenia z pustymi danymi wejściowymi nie jest wyświetlany.

Wypróbuj online!



4

Cubix , 43 46 bajtów

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

Wypróbuj online!

Cubified

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

Zobacz, jak biegnie

Udało mi się ogolić jeszcze kilka, ale było to trochę trudniejsze niż myślałem. Po pierwszym cytacie jest znak zastępczy, który daje mi 26.

  • '<sub> pchnij 26 na stos jako numer podstawowy
  • :(! zduplikowana baza jako licznik, dekrementacja, test na prawdę
  • una true pomiń $polecenie i skręć w prawo
    • So;u naciśnij 32, wyślij jako znak, pop 32 i skręć w prawo na spadek
  • $przy fałszywym skoku następne upolecenie
  • ;:'@^ pop, zduplikuj numer bazowy, wepchnij 64 na stos i przekieruj na torturującą trasę
  • $\s/:\/u;$jest to kolejność kroków na górnej powierzchni. Sprowadza się do zamiany licznika na 64. Kończy się pominięciem przekierowania, które go tutaj umieściło.
  • <+o;U przekieruj, aby dodać, wyprowadzić znak, pop, skręcić w lewo
  • (!zmniejszanie, test na prawdę. Jeśli prawda zaczyna się na ścieżce, która uderza w zwrot i wraca do przekierowania.
  • |(;No na false, refleksja, test redundantny, redundantny dekrement, pop, push 10 i znak wyjściowy
  • ;;(u!@Wwyskoczyć do numeru podstawowego, zmniejszyć, skręcić w prawo na test prawdy, zatrzymać, jeśli fałsz inaczej zmienić pas na duplikat na początku. Wypłukać i powtórzyć.

4

Python, 83 bajty

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

Moja pierwsza odpowiedź na codegolf :)


1
Spóźnione powitanie w PPCG! niezła odpowiedź!
Conor O'Brien,


4

Vim, 43 naciśnięcia klawiszy

:h<_<CR>jjYZZPVgUxjpqqy$-i <Esc>lpl"aDYPD"ap+q25@q

Możesz zobaczyć to w akcji w tym pliku GIF wykonanym przy użyciu skryptu python Lynna

wprowadź opis zdjęcia tutaj


3

JavaScript, 75 74 bajtów

1 bajt zapisany dzięki Rickowi Hitchcockowi

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

Wypróbuj online!


Zapisz bajt, inicjując b( b=''), a następnie busuwając nawiasy kwadratowe.
Rick Hitchcock,

@RickHitchcock. Dzięki.

3

Perl 5 , 49 bajtów

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

Wypróbuj online!


Wygląda na to, że brakuje Ci pierwszego A, ale wydaje się, że można to naprawić, zmieniając $"x25na $"x26!
Dom Hastings,

Kiedy dodałem dodatkowe Z, zapomniałem to wyjaśnić.
Xcali,

3

Pyke , 8 bajtów

G_.<XFo}h-

Wypróbuj tutaj!

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

Widzę, że właściwy język robi to w 6 bajtach, jeśli mają wbudowane prepend n spaces to stringfunkcje, jak również to, co robi Pyke


3

PHP ( 63 58 55 bajtów)

Jest to prawdopodobnie mój ulubiony dziwny zakątek PHP, który dziedziczy po Perlu:

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

To generuje końcowy znak nowej linii, co jest wyraźnie dozwolone. Można to uruchomić, php -raby zapisać otwór <?phppotrzebny do umieszczenia tego w pliku.

Objaśnienie: gdy zmienna zawierająca ciąg 'A'jest zwiększana w PHP, staje się ona, 'B'a potem 'C'i tak dalej, aż 'Z'staje się 'AA'. W 'A'tej szalonej algebrze nie ma żadnej cyfry , a operator dekrementacji nie cofnie jej, więc zapisujemy przyrostowo odwrócony alfabet $z(domyślnie jest NULLto, kiedy po połączeniu z łańcuchem zachowuje się jak pusty ciąg - to samo dzieje się z $si $q). Biała spacja jest kumulowana, $sa cały ciąg jest kumulowany do tyłu w zmiennej, $qco oznacza, że ​​musimy go echo na końcu.

Dzięki Tytusowi za grę w golfa z moich kręconych aparatów ortodontycznych i powiedzenie mi, że nie muszę ponosić kary za flagi oceny wewnętrznej -r.


1
To 57 bajtów, jeśli używasz łamania linii linuksa. -rjest wolny. Dwa bajty krótsze:for($c=A;$c!=AA;$q="$s$z\n$q",$s.=" ")$z=$c++.$z;echo$q;
Tytus

@Titus dzięki, dał ci hołd w odpowiedzi.
CR Drost

nm. Pamiętaj, że -Ri nie-F są bezpłatne. Zobacz codegolf.meta.stackexchange.com/questions/2424/…
Titus

Wierzę, że możesz zapisać bajt, jeśli używasz $c<AA.
Ismael Miguel

1
@ IsmaelMiguel przepraszam, byłem zbyt zwięzły. Kiedy to napisałem, myślałem: „może jest jakiś sposób na przemieszanie rzeczy bez uzyskiwania bajtów, aby najpierw zdarzyła się sprawa A, a potem wykryliśmy AA kontra B, ale nie sądzę, że jestem wystarczająco bystry, aby to zobaczyć. . ” Nie chciałem być nonszalancki i postaram się na to uważać w przyszłości.
CR Drost

3

SOGL V0.12 , 10 8 bajtów

Z±{Xf}⁰¼

Wypróbuj tutaj!


Ciekawe, jak długo trwa wersja skompresowana?
caird coinheringaahing

@cairdcoinheringaahing TL; DR zdecydowanie za długo. Kompresja SOGL jest do bani (i jest stworzona specjalnie dla) powtarzalnych rzeczy. Byłoby bardzo trudno powiedzieć, ponieważ kompresja nie jest zautomatyzowana (automatyzacja wymagałaby podjęcia 701 choose xprób dla dowolnej liczby całkowitej x), ale
trudna


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.