Una muy larga Terza Rima


38

Descripción

Salida del esquema de rima para un Terza Rima muy largo

Entrada

Ninguna.

Salida

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

Reglas

Puede elegir entre separar las estrofas con espacios en blanco o líneas nuevas, así que:

ABA BCB...

O

ABA
BCB
...

Se permite un solo espacio en blanco al final por línea y una nueva línea al final.

La salida puede ser mayúscula o minúscula.

Este es el , por lo que gana el código más corto en bytes para cada idioma.


44
¿Está bien una lista de líneas?
totalmente humano

66
Según en.wikipedia.org/wiki/Terza_rima, su final es incorrecto. Debe terminar con Z o ZZ.
Chris

¿Puede haber salida adicional más allá del esquema de la rima? Esto podría ahorrarme unos pocos bytes.
NK1406

@ NK1406 No, lo siento.
LiefdeWen

1
@totallyhuman String array está bien.
LiefdeWen

Respuestas:


24

JavaScript (ES6), 51 50 49 bytes

Guardado 1 byte gracias a @ l4m2

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

Pruébalo en línea!

¿Cómo?

Comenzamos con n = 45358 ( yzy en base-36). Restamos 1333 de n en cada iteración ( 111 en base-36). Nos detenemos tan pronto como n MOD 63 = 0 , porque 12033 ( 9a9 en base-36) es el primer valor para el que se cumple esta condición, y 63 es el módulo más pequeño con dicha propiedad.

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

¿Cómo decidiste base36? y estás seguro de que es óptimo?
LiefdeWen

2
@LiefdeWen Es la base más baja para contener todas las letras, por lo que es óptima.
Erik the Outgolfer

@ user202729 ¿Qué quieres decir? Él no es OP, ¿entonces es una de esas personas a las que te refieres?
Erik the Outgolfer

17
Como un nodo lateral (no) interesante, 1333 = 666 * 2 + 1 y esta es mi 666a respuesta en PPCG.
Arnauld

3
@Arnauld, asegúrese de usar el valor 1335 en algún lugar de su próxima respuesta.
IanF1


10

Jalea , 7 bytes

ØAṡ2ŒBY

Pruébalo en línea!

-1 byte gracias a Dennis

ØAṡ2ŒBY  Main Link
ØA       Alphabet
  ṡ2     Slice into overlapping slices of length 2
    ŒB   Palindromize (bounce) each
      Y  Join by newlines

9

brainfuck , 51 48 bytes

Guardado 3 bytes gracias a @ovs.

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

Pruébalo en línea!

Explicación

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 - Acabo de notar que mi respuesta es bastante similar a la tuya. No dude en comentar si cree que está demasiado cerca y lo eliminaré.
ElPedro

1
@ElPedro No, estás bien, no hay mucho espacio para la innovación en este desafío :)
Conor O'Brien

9

05AB1E , 5 bytes

Aü«€û

Pruébalo en línea!

-1 byte gracias a Emigna
-1 byte gracias al cambio de regla; gracias a kalsowerus por señalar eso

Jeje, actualmente vence a Pyth. \ o /

Explicación

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

Podrías hacerloAü«€û»
Emigna

@Emigna Oh genial, gracias! : D
HyperNeutrino

Bien, eso es lo que obtuve sin mirar.
Urna de pulpo mágico

Según los comentarios, una lista de cadenas está bien como salida, puede eliminar la unión.
kalsowerus

9

brainfuck , 51 49 bytes

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

Pruébalo en línea!

Un intento de explicación ...

+++++                     #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 con agradecimiento a @ovs

Mi primer intento de brainfuck por lo que cualquier pista recibió con gratitud. Si tuviera más experiencia con él, entonces estoy seguro de que podría eliminar algunos bytes más, pero solo me metí en eso ayer.





6

Carbón , 11 bytes

E²⁵✂αι⁺²ι‖O

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

 ²⁵         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

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

Pruébalo en línea!

Una razón por la que esto es más corto que la otra respuesta de cerebro-flak es porque usa caracteres en mayúsculas en lugar de minúsculas, que tienen valores ASCII más pequeños y, por lo tanto, son más fáciles de presionar.

Explicación:

#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
}

Escribo la primera versión y no recibo votos positivos, escribes una versión de golf y obtienes +5. ???
Christopher

5

R, 51 47 bytes

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

Salida:

> 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

La manera ingenua sin fantasía sprintfes de 49 bytes
Giuseppe

@Giuseppe eso sería porque no lo sprintf
usé

OK, pero encontré un byter 40 :)
Giuseppe

@Giuseppe ouch :)
plannapus

1
otro [40 byter] [ tio.run/##K/r/… basado en la conversión de códigos ASCII, en el caso
NofP

5

Java 8 , 132 85 62 60 Bytes

  • 47 bytes gracias a Neil
  • 26 bytes gracias a Oliver
  • 3 bytes y mucho mejor formato gracias a Kevin
  • Error arreglado por Oliver

Golfed

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

Sin golf

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
La impresión de una matriz de caracteres probablemente sería mucho más corta.
Neil

1
¿Puedes hacer iun chartambién?
Neil

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

2
Actualmente, este es un fragmento en lugar de una función o programa, por lo que deberá agregar lo v->{...}mencionado anteriormente por @ OlivierGrégoire. ( En caso de que no sepa cómo funcionan las lambdas de Java 8, hice una explicación una vez antes ) . Además, puede quitar los corchetes del bucle como lo hizo Olivier, y como golf adicional puede cambiar la impresión a System.out.print(" "+i+++i--+i);(un espacio en su lugar de una nueva línea, y no necesita el espacio en c+++c--+c). Pruébalo aquí
Kevin Cruijssen

1
Gracias @KevinCruijssen por los consejos, así como el documento java lambdas. Esa fue una guía muy fácil de seguir para implementar algunas lambdas simples. He actualizado en consecuencia!
DevelopingDeveloper




4

brainfuck , 41 bytes

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

Pruébalo en línea!


+1 Sigo la mayor parte pero comienza con - [¿Eso significa que está configurando la celda 0 a -1 antes de comenzar el ciclo? ¿Alguna posibilidad de una explicación para un novato brainfuck si tienes tiempo? Por cierto, gracias por el -2 en mi esfuerzo.
ElPedro

@ElPedro, esto depende del intérprete de brainfuck, el intérprete en tio.run almacena números de 8 bits sin signo en cada celda, por lo que la primera celda obtiene 255 antes del bucle.
ovs

@ElPedro el segmento de inicialización es realmente generado por BF-Crunch .
ovs

4

brainfuck , 45 37 bytes

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

Pruébalo en línea!

Imprime en mayúsculas, separadas por espacios con un espacio final.

Cómo funciona:

+[[<+>>++<-]>] 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
¡Esto es realmente muy bueno! ¡Buen trabajo!
Polvo




3

Brain-Flak , 180 bytes

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

Pruébalo en línea!

Gracias a DJ por hacer que esto funcione


3

Haskell , 28 bytes

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

Pruébalo en línea!

succ es una elección de nombre tan desafortunada ...

Explicación

[[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

44
No creo que sea completamente justo devolver una lista de cadenas en lugar de separarlas con espacio o nueva línea según sea necesario.
usuario28667

@ user28667 Por lo general, está permitido en desafíos (probablemente debería estar en la publicación IO predeterminada, si aún no lo está). El OP aún no ha respondido específicamente a este desafío. Sin embargo, esto no es motivo para rechazarlo.
totalmente humano

@totallyhuman Por el momento, el desafío especifica explícitamente que se deben usar espacios o líneas nuevas para separar la salida, por lo que esta respuesta no es válida actualmente. Por lo tanto, estrictamente de acuerdo con las reglas del sitio, debe eliminarse o simplemente arreglarse anteponiendo a unlineso unwords.
Laikoni

@Laikoni Parece que te ninja. El desafío no niega explícitamente una lista de líneas como salida. (Además, eso invalidaría una buena cantidad de respuestas). De cualquier manera, la respuesta ahora no es inválida.
totalmente humano

3

R , 40 bytes

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

Pruébalo en línea!

Una alternativa más en R a las respuestas de Plannapus y Giuseppe . Publicado siguiendo su solicitud. Esta solución utiliza código ASCII para la codificación UTF8.

PD: si se permitieran TAB, se podría reemplazar la nueva línea (código ASCII 10) con una tabulación (código ASCII 9), y la solución podría reducirse a 39 bytes:

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


Creo que usar 9está perfectamente bien, ya que es un espacio en blanco, que está permitido por el OP.
Giuseppe


3

PowerShell , 39 37 bytes

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

Pruébalo en línea!

Bucles de 65a 89. En cada iteración, estamos construyendo una matriz entera de (el actual, uno más y el actual) del dígito actual, usando pre-incremento y pre-decremento. Luego se vuelve a emitir como una charmatriz y se editan -joinen una sola cadena. Cada cadena se deja en la tubería y un implícito Write-Outputen la finalización del programa nos da una nueva línea entre cada elemento de forma gratuita.


Alternativamente, el mismo conteo de bytes

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

Pruébalo en línea!


1
($_,($_+1),$_)es una tupla alternativa del mismo largo
Veskah



2

Pepe, 59 56 bytes

-3 bytes gracias a u_ndefined

REeEeEEeEerEeEeeeeeERrEEEEErEEEeeREEreeerEEEEEeeEreeERee

Pruébalo en línea!

Explicación:

# 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
Reemplazar rEeEeeeeEecon RrEEEEEahorra 3 bytes
u_ndefined

@u_ndefined ¡Gracias! Hice este código antes de que se agregaran banderas a Pepe. Se actualizó la respuesta.
RedClover


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.