Eine sehr lange Terza Rima


38

Beschreibung

Geben Sie das Reimschema für eine sehr lange Terza Rima aus.

Eingang

Keiner.

Ausgabe

ABA
BCB
CDC
DED
EFE
FGF
GHG
HIH
IJI
JKJ
KLK
LML
MNM
NON
OPO
PQP
QRQ
RSR
STS
TUT
UVU
VWV
WXW
XYX
YZY

Regeln

Sie können zwischen Zeilengruppen mit Leerzeichen oder Zeilenumbrüchen wählen, also entweder:

ABA BCB...

ODER

ABA
BCB
...

Ein einzelnes abschließendes Leerzeichen pro Zeile und eine abschließende neue Zeile sind zulässig.

Die Ausgabe kann entweder in Groß- oder Kleinbuchstaben erfolgen.

Das ist , also gewinnt der kürzeste Code in Bytes für jede Sprache.


4
Ist eine Liste von Zeilen in Ordnung?
Totalhuman

6
Laut en.wikipedia.org/wiki/Terza_rima ist dein Ende falsch. Es sollte entweder mit Z oder ZZ enden.
Chris

Kann es über das Reimschema hinaus zusätzliche Ausgaben geben? Das könnte mir ein paar Bytes sparen.
NK1406

@ NK1406 Nein, tut mir leid.
LiefdeWen

1
@totallyhuman String Array ist in Ordnung.
LiefdeWen

Antworten:


24

JavaScript (ES6), 51 50 49 Bytes

1 Byte dank @ l4m2 eingespart

f=(n=45358)=>n%63?f(n-1333)+n.toString(36)+' ':''

Probieren Sie es online!

Wie?

Wir beginnen mit n = 45358 ( yzy in Basis 36). Wir subtrahieren 1333 von n bei jeder Iteration ( 111 in Basis 36). Wir stoppen, sobald n MOD 63 = 0 ist , da 12033 ( 9a9 in Basis 36) der erste Wert ist, für den diese Bedingung erfüllt ist, und 63 das kleinste Modulo mit einer solchen Eigenschaft ist.

Decimal | Base-36 | MOD 63
--------+---------+-------
  45358 |   yzy   |   61
  44025 |   xyx   |   51
  42692 |   wxw   |   41
  41359 |   vwv   |   31
  40026 |   uvu   |   21
  38693 |   tut   |   11
  37360 |   sts   |    1
  36027 |   rsr   |   54
  34694 |   qrq   |   44
  33361 |   pqp   |   34
  32028 |   opo   |   24
  30695 |   non   |   14
  29362 |   mnm   |    4
  28029 |   lml   |   57
  26696 |   klk   |   47
  25363 |   jkj   |   37
  24030 |   iji   |   27
  22697 |   hih   |   17
  21364 |   ghg   |    7
  20031 |   fgf   |   60
  18698 |   efe   |   50
  17365 |   ded   |   40
  16032 |   cdc   |   30
  14699 |   bcb   |   20
  13366 |   aba   |   10
  12033 |   9a9   |    0

Wie hast du dich für base36 entschieden? und sind Sie sicher, dass es optimal ist?
LiefdeWen

2
@LiefdeWen Es ist die niedrigste Basis, um alle Buchstaben zu enthalten, also ist es optimal.
Erik der Outgolfer

@ user202729 Was meinst du? Er ist nicht OP, also ist er einer der Leute, auf die Sie sich beziehen?
Erik der Outgolfer

17
Als (un) interessanter Nebenknoten ist 1333 = 666 * 2 + 1 und dies ist meine 666. Antwort auf PPCG.
Arnauld

3
@ Arnauld stellen Sie bitte sicher, dass Sie den Wert 1335 irgendwo in Ihrer nächsten Antwort verwenden.
IanF1



9

Brainfuck , 51 48 Bytes

3 Bytes dank @ovs gespart.

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

Probieren Sie es online!

Erläuterung

INITIALIZE TAPE:

0000:           (none)
0001: C_NEWLINE (10)
0002: V_COUNT   (25)
0003: V_ALPHA   (64)
++++++++[>+>+++>++++++++<<<-]>++>+

V_COUNT TIMES:              [-
    INCREMENT V_ALPHA         >+
    PRINT V_ALPHA             .
    PRINT V_ALPHA PLUS ONE    +.
    PRINT V_ALPHA             -.
    PRINT C_NEWLINE           <<.
END LOOP                    >]

@ ConorO'Brien - Mir ist gerade aufgefallen, dass meine Antwort Ihrer sehr ähnlich ist. Bitte zögern Sie nicht zu kommentieren, wenn Sie denken, dass es zu nah ist und ich es entfernen werde.
ElPedro

1
@ ElPedro Nein, es geht dir gut, es gibt nicht viel Raum für Innovationen in dieser Herausforderung :)
Conor O'Brien

9

05AB1E , 5 Bytes

Aü«€û

Probieren Sie es online!

-1 Byte dank Emigna
-1 Byte dank Regeländerung; danke an kalsowerus für den hinweis

Hehe, derzeit schlägt Pyth. \O/

Erläuterung

Aü«€û»  Full Program
A       Lowercase Alphabet
 ü«     Pairwise with merge-list
   €û   For each, palindromize

Sie könnten tunAü«€û»
Emigna

@Emigna O cool, danke! : D
HyperNeutrino

Schön, das habe ich auch, ohne hinzusehen.
Magic Octopus Urn

Laut den Kommentaren ist eine Liste von Strings als Ausgabe in Ordnung, Sie können den Join entfernen.
Kalsowerus

9

Brainfuck , 51 49 Bytes

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

Probieren Sie es online!

Ein Erklärungsversuch ...

+++++                     #Put 5 in cell 0 because that is the highest common denominator of 10, 65 and 25
[                         #Start loop
>+++++                    #Counter in cell 1 is 25 (How many lines we must print)
>+++++++++++++            #Counter in cell 2 is 65 (ASCII A)  
>++                       #Counter in cell 3 is 10 (Newline)
<<<-]                     #Decrement the outer counter until the cells have the right values (muliples of 5).
>                         #Move to the counter that says how many lines we must print.
[>.                       #Print the character in cell 2
+.                        #Add one to the character in cell 2 and print it
-.                        #Subtract one from the character in cell 2 and print it
+                         #Add one to the character in cell 2 for the next loop
>.                        #Print a new line
<<-]                      #Decrement cell 1 and run again until cell 1 is 0

-2 mit Dank an @ovs

Mein erster Versuch, also irgendwelche Hinweise zu brainficken, wurde dankbar aufgenommen. Wenn ich mehr Erfahrung damit hätte, könnte ich sicher noch ein paar Bytes mehr sparen, aber ich bin erst gestern darauf gekommen.





6

Holzkohle , 11 Bytes

E²⁵✂αι⁺²ι‖O

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:

 ²⁵         Literal 25
E           Map over implicit range
    α       Predefined uppercase letters
   ✂ ι⁺²ι   Slice 2 characters
            Implicitly print result on separate lines
         ‖O Reflect with overlap

6

Brain-Flak , 90 Bytes

((((()()()){}){}){}()){(({})<((({}((((()()()()){}){}){}){})())[()])((()()()()()){})>[()])}

Probieren Sie es online!

Dies ist unter anderem deshalb kürzer als die andere Brain-Flak-Antwort, weil statt Kleinbuchstaben Großbuchstaben verwendet werden, die kleinere ASCII-Werte aufweisen und daher einfacher zu übertragen sind.

Erläuterung:

#Push 25
((((()()()){}){}){}())

#While true
{

    #Keep track of the number on top of the stack...
    # We'll call it 'a'
    (({})

        #Push A +...
        <((({}

        # 64 (push)
        ((((()()()()){}){}){}){})
        # + 1 (push)
        ())
        # - 1 (push)
        [()])

        # Push 10
        ((()()()()()){})>

    # Now that's all pushed, we push a - 1 to decrement the loop counter
    [()])

# Endwhile
}

Ich schreibe die erste Version und bekomme keine Upvotes. Schreibe eine Golf-Version und bekomme +5. ???
Christopher

5

R, 51 47 Bytes

L=LETTERS;cat(sprintf("%s%s%1$s",L[-26],L[-1]))

Ausgabe:

> L=LETTERS;cat(sprintf("%s%s%1$s",L[-26],L[-1]))
ABA BCB CDC DED EFE FGF GHG HIH IJI JKJ KLK LML MNM NON OPO PQP QRQ RSR STS TUT UVU VWV WXW XYX YZY

Die naive Art und Weise ohne Phantasie sprintfist 49 Bytes
Giuseppe

@ Giuseppe das wäre, weil ich nicht sprintfrichtig verwendet :)
Plannapus

OK, aber ich fand ein 40 Byte :)
Giuseppe


1
ein weiterer [40 byter] [ tio.run/##K/r/… basierend auf der Konvertierung von ASCII-Codes, falls
NofP

5

Java 8 , 132 85 62 60 Bytes

  • 47 Bytes dank Neil
  • 26 Bytes danke an Oliver
  • 3 Bytes und viel bessere Formatierung dank Kevin
  • Fehler behoben von Oliver

Golf gespielt

a->{for(char i=64;++i<90;)System.out.println(""+i+++i--+i);}

Ungolfed

public class TerzaRima {
    interface A{
        void a(String a);
    }
    static A a = a -> {
        for (char i = 64; ++i < 90; ) System.out.println("" + i++ + i-- + i);
    };
    public static void main(String[] args){
        a.a(null);
    }
}

1
Das Drucken eines Zeichen-Arrays wäre wahrscheinlich viel kürzer.
Neil

1
Kannst du auch ieine machen char?
Neil

2
a->{for(char c=64;++c<90;)System.out.println(""+c++ +c--+c);}(62 bytes)
Olivier Grégoire

2
Derzeit ist dies ein Snippet anstelle einer Funktion oder eines Programms v->{...}. Fügen Sie daher das oben von @ OlivierGrégoire erwähnte hinzu. ( Für den Fall, dass Sie nicht wissen, wie Java 8-Lambdas funktionieren, habe ich bereits eine Erklärung abgegeben. ) Außerdem können Sie die Klammern der Schleife entfernen, wie dies Olivier getan hat, und als zusätzliches Golfspiel können Sie den Ausdruck in System.out.print(" "+i+++i--+i);(ein Leerzeichen) ändern von einer neuen Zeile, und Sie brauchen nicht das Leerzeichen an c+++c--+c). Probieren Sie es hier aus.
Kevin Cruijssen

1
Vielen Dank an KevinCruijssen für die Tipps sowie das Java Lambdas-Dokument. Das war eine sehr einfach zu befolgende Anleitung, um einige einfache Lambdas zu implementieren. Ich habe entsprechend aktualisiert!
DevelopingDeveloper




4

Brainfuck , 41 Bytes

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

Probieren Sie es online!


+1 Ich verfolge das meiste davon, aber es beginnt mit - [Bedeutet das, dass Sie die Zelle 0 auf -1 setzen, bevor Sie die Schleife starten? Haben Sie eine Chance, einem Brainfuck-Neuling eine Erklärung zu geben, wenn Sie Zeit haben? Übrigens, danke für die -2 auf meine Mühe.
ElPedro

@ElPedro Dies hängt vom Brainfuck-Interpreter ab. Der Interpreter bei tio.run speichert vorzeichenlose 8-Bit-Zahlen in jeder Zelle, sodass die erste Zelle vor der Schleife 255 erhält.
Ovs

@ElPedro Das Initialisierungssegment wird tatsächlich von BF-Crunch generiert .
Ovs

4

Brainfuck , 45 37 Bytes

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

Probieren Sie es online!

Druckt in Großbuchstaben, die durch Leerzeichen mit einem Leerzeichen am Ende getrennt sind.

Wie es funktioniert:

+[[<+>>++<-]>] Intialises the tape with the format n^2
               1 2 4 8 16 32 64 128 0 0'
<<---          Navigates to the desired section and tweaks the counter
               1 2 4 8 16 32 64 125<
[-----<+.+.-.<.>>] Prints the Terza Rima, using:
                 125 as the loop counter (decremented by 5 each loop)
                 64 as the current alphabetic character (incremented and printed each loop)
                 32 as the space character

1
Das ist eigentlich ganz nett! Gut gemacht!
Staub




3

Brain-Flak , 180 Bytes

(()()())(({}){})(({}){})(({}){})(({}){})(({}){}())<>(()()()()())(({}){})(({}){})(()()()()(){}){({}[()])<>(({}))(({}()))(({}[()]))({}()<(()()()()()()()()()())>)<>}<>{}{}{({}<>)<>}<>

Probieren Sie es online!

Vielen Dank an DJ, der dafür gesorgt hat, dass es funktioniert


3

Haskell , 28 Bytes

[[x,succ x,x]|x<-['A'..'Y']]

Probieren Sie es online!

succ ist so eine unglückliche Namenswahl ...

Erläuterung

[[x,succ x,x]|x<-['A'..'Y']]

[            |x<-          ]  -- for x in...
                 ['A'..'Y']   -- the alphabet sans Z
 [x,succ x,x]                 -- construct a string of x, the successor of x and x

4
Ich halte es nicht für fair, eine Liste von Zeichenfolgen zurückzugeben, anstatt sie nach Bedarf durch Leerzeichen oder Zeilenvorschub zu trennen.
user28667

@ user28667 Dies ist normalerweise in Challenges zulässig (sollte sich wahrscheinlich auf dem Standard-E / A-Post befinden, sofern dies nicht bereits geschehen ist). Das OP muss noch speziell auf diese Herausforderung reagieren. Dies ist jedoch kein Grund zur Ablehnung.
Totalhuman

@totallyhuman Derzeit gibt die Abfrage ausdrücklich an, dass Leerzeichen oder Zeilenumbrüche zum Trennen der Ausgabe verwendet werden sollen. Daher ist diese Antwort derzeit ungültig. Es sollte also streng nach den Site-Regeln gelöscht oder einfach durch Voranstellen eines unlinesoder behoben werden unwords.
Laikoni

@Laikoni Ich habe dich anscheinend ninja. Die Abfrage verweigert nicht explizit eine Liste von Zeilen als Ausgabe. (Außerdem würde dies eine ganze Reihe von Antworten ungültig machen.) In beiden Fällen ist die Antwort jetzt nicht ungültig.
Totalhuman

3

R , 40 Bytes

cat(intToUtf8(rbind(x<-65:89,x+1,x,10)))

Probieren Sie es online!

Eine weitere Alternative in R zu den Antworten von Plannapus und Giuseppe . Gepostet nach deren Anfrage. Diese Lösung verwendet ASCII-Code zur UTF8-Codierung.

PS: Wenn Tabulatoren zulässig wären, könnte die neue Zeile (ASCII-Code 10) durch eine Tabelle (ASCII-Code 9) ersetzt werden, und die Lösung könnte auf 39 Byte verkleinert werden:

cat(intToUtf8(rbind(x<-65:89,x+1,x,9)))


Ich denke, die Verwendung 9ist vollkommen in Ordnung, da es sich um Leerzeichen handelt, die vom OP zugelassen werden.
Giuseppe


3

PowerShell , 39 37 Bytes

65..89|%{-join[char[]]($_,++$_,--$_)}

Probieren Sie es online!

Schleifen von 65bis 89. Bei jeder Iteration erstellen wir ein ganzzahliges Array (das aktuelle, ein weiteres und das aktuelle) der aktuellen Ziffer unter Verwendung von Vorinkrementierung und Vordekrementierung. Das wird dann als char-array neu umgewandelt und -joinzu einer einzigen Zeichenfolge zusammengefasst. Jeder String Write-Outputverbleibt in der Pipeline, und eine implizite Angabe bei Programmabschluss gibt uns einen kostenlosen Zeilenumbruch zwischen den einzelnen Elementen.


Alternativ die gleiche Byteanzahl

65..89|%{-join[char[]]($_,($_+1),$_)}

Probieren Sie es online!


1
($_,($_+1),$_)ist ein alternatives Tupel gleicher Länge
Veskah



2

Pepe, 59 56 Bytes

-3 Bytes dank u_ndefined

REeEeEEeEerEeEeeeeeERrEEEEErEEEeeREEreeerEEEEEeeEreeERee

Probieren Sie es online!

Erläuterung:

# Prepare stacks

  # prepare stack R [Z]
  REeEeEEeEe  # push Z

  # prepare stack r [A,B,A]
  rEeEeeeeeE  # push A
  RrEEEEE     # copy and increment A (getting B)
  rEEEee      # duplicate A to end

# Start loop
REE           # create label Z

  reee        # output stack r contents
  rEEEEEeeE   # increment all

  reeE        # end line

Ree           # loop while r[p] != Z

1
Ersetzen rEeEeeeeEedurch RrEEEEEspart 3 Bytes
u_ndefined

@u_ndefined Danke! Ich habe diesen Code gemacht, bevor Flaggen zu Pepe hinzugefügt wurden. Die Antwort wurde aktualisiert.
RedClover

1

Retina , 24 Bytes


ABA
;{:G`
T`_p`p`[^Y]..

Probieren Sie es online!


21 Bytes , leidet aber an nachgestellten Zeilenumbrüchen ...
Neil

@Neil Ja, du brauchst das nicht mal `.... Diese nachgestellten Zeilenumbrüche loszuwerden ist allerdings sehr ärgerlich. Ich hoffe, das Drucken in Loops in Retina 1.0 etwas flexibler und praktischer zu gestalten.
Martin Ender

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.