Euro monedas y billetes

26

Como la mayoría de las naciones que usan el euro tienen el ,separador decimal, también debe usarlo.

La tarea es generar todos los valores de las monedas y billetes en euros en orden ascendente. También debe colocar el final ,00en los valores enteros.

0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00

Acepto la salida a stdout o una función que devuelve una matriz / lista. Si la salida es stdout, los separadores aceptables entre valores son: espacio, tabulación o nueva línea.

No habrá respuesta aceptada, a menos que vea a alguien que encuentre muy creativo.

, así que quiero saber la respuesta más corta por idioma.

Actualizar:

Los 0ceros iniciales no son aceptables. Lo siento, debería dejarlo claro antes.

Actualización 2:

También es aceptable una función que devuelve una cadena.

sergiol
fuente
1
¿puede haber un espacio final?
dzaima
1
@dzaima: sí. :)
sergiol
1
¿Son aceptables los ceros iniciales (como 000,01etc.)?
Jonathan Allan
8
La respuesta aceptada es la respuesta que gana el desafío. Puede aceptar la respuesta más corta o ninguna respuesta, pero no una arbitraria.
Dennis
2
@KevinCruijssen: Ver la respuesta de Dennis para referencia: codegolf.stackexchange.com/a/141484/29325
sergiol

Respuestas:

27

Pure Bash, 48

s={1,2,5}
eval echo 0,0$s 0,${s}0 ${s}{,0,00},00

Pruébalo en línea .

Trauma digital
fuente
¡Bien jugado! Tienes la marca de verificación!
sergiol
3
Nunca me di cuenta del patrón ... y he estado usando la moneda durante 15 años ...
Stephan Bijzitter
@StephanBijzitter muchas monedas funcionan así.
NieDzejkob
7

Japt , 23 22 bytes

-1 byte gracias a @Shaggy

5Æ#}ì ®eX-2 x2 d".,"
c

Devuelve una matriz de cadenas.

Pruébalo en línea! con la -Rbandera para generar elementos de matriz en líneas separadas.

Justin Mariner
fuente
Vaya multilínea por 22 bytes .
Shaggy
7

Python 2 , 72 bytes

print[('%.2f'%(10**(x/3-2)*(5>>~x%3))).replace(*'.,')for x in range(15)]

Pruébalo en línea!

La expresión 5>>~x%3asigna los números enteros no negativos a 1, 2, 5, 1, 2, 5...

Funciona porque 5, 2, 1son las sucesivas derecha-bitshifts de 5( 0b1010b100b1); los recorremos en reversa.

Lynn
fuente
6

Carbón , 36 bytes

EE×125⁵⁺⁺×0⁻²÷κ³ι×0÷κ³⁺⁺✂ι⁰±²¦¹,✂ι±²

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

   125                                  String `125`
  ×   ⁵                                 Repeated 5 times
 E                                      Map over each character
              ÷κ³   ÷κ³                 Integer divide loop index by 3
            ⁻²                          Subtract from 2
          ×0      ×0                    Repeat the string `0` x times
        ⁺⁺       ι                      Concatenate with the character
E                                       Map over each resulting string
                         ✂ι⁰±²¦¹        Slice off the last two digits
                                ✂ι±²    Extract the last two digits
                       ⁺⁺       ,       Concatenate with a comma
                                        Implicitly print one per line
Neil
fuente
6

SOGLOnline offline, 27 26 25 24 23 22 21 bytes

252¹5∙īυ;{⁴Ζ.,ŗP*F⁾?½

Pruébalo aquí!

El enlace en línea no muestra ceros a la izquierda, pero la versión fuera de línea lo hace como Javas BigDecimals es agradable.

Explicación:

252¹5∙īυ;{⁴Ζ.,ŗP*F⁾?½
252¹                 push the array [2, 5, 2]
    5∙               multiply vertically by 5
      īυ;            push 0.01 below that - the main number
         {           iterate over that array - [2,5,2,2,5,2,2,5,2,2,5,2,2,5,2]
          ⁴            duplicate the main number
           Ζ.,ŗ        replace "." with ","
               P       output in a new line
                *      multiply the main number with the current item of the array
                 F⁾?   if the current array item-2 isn't 0, then
                    ½    divide by 2

Para ejecutar en el intérprete fuera de línea, descargue el repositorio de SOGLOnlines , vaya al compilador / intérprete, abra cualquiera de los .pdearchivos con Processing , luego haga file -> export para su sistema operativo (de lo contrario no puede dar argumentos a un programa Processing: /), y luego ejecute el programa compilado con un argumento en la ruta del archivo con el código. Entonces, stdout contendrá esto .

2L¼2¹5∙īυ;{⁴Ζ.,ŗP*para 18 bytes casi funciona pero la cantidad cero crece, lo que da como resultado 0,01 0,02 0,050 0,100 0,200 0,5000 1,0000 2,0000 5,00000 10,00000 20,00000 50,000000 100,000000 200,000000 500,0000000(nuevas líneas reemplazadas por espacios)

dzaima
fuente
2
Formato de salida incorrecto: "También debe colocar el final ,00en los valores enteros". (Me imagino que esto también tiene la intención de incluir el seguimiento ,0cuando sea apropiado)
Jonathan Allan
Debes arreglar tu publicación de acuerdo con la observación de @JonathanAllan. JonathanAllan, gracias
sergiol
@ JonathanAllan: Hmmmpf, déjame tomar tu comentario con un grano de sal. El autor de la publicación dice: " El enlace en línea no muestra ceros finales, pero la versión fuera de línea hace lo mismo que Javas BigDecimals son agradables ". Por lo tanto, no tengo forma de verificar si el script se comporta bien o no en la versión sin conexión.
sergiol
@sergiol Ah, me perdí ese mensaje. Me pregunto por qué el intérprete en línea se implementa de manera diferente a este respecto: dzaima ...?
Jonathan Allan
Creo que el intérprete en línea está escrito en JavaScript, mientras que el que no está en línea está escrito en Processing. Además, las soluciones no tienen que ser comprobables en línea. : P
totalmente humano
6

Java 8, 109 108 81 80 bytes

Gracias a @ OlivierGrégoire por la idea de Locale

x->{for(double i=.001;i<11;)System.out.printf("%.2f %.2f %.2f ",i*=10,i*2,5*i);}

Pruébalo en línea!

Roberto Graham
fuente
Puede guardar un byte cambiando a un parámetro no utilizado (meta publicación sobre esto) : Pruébelo en línea
Justin Mariner
100 bytes .
Olivier Grégoire
2
81 bytes . Funciona en mi sistema porque mi configuración regional predeterminada es be_FR. "Trabajar en mi sistema" es lo suficientemente bueno. No puedo encontrar la meta-publicación vinculada a esto, pero puedes usarla. Para simularlo, solo tiene Locale.setDefault(Locale.FRENCH);en la parte no competitiva del TIO.
Olivier Grégoire
1
@ OlivierGrégoire Aquí está la meta-publicación relevante , y tienes razón en que está permitido. Incluso le pedí a OP que verificara, y él me vinculó a la respuesta de Dennis con un enlace a esta meta publicación.
Kevin Cruijssen
1
80 bytes:x->{for(double i=.001;i<11;)System.out.printf("%.2f %.2f %.2f ",i*=10,i*2,5*i);}
Nevay
5

APL (Dyalog) , 30 28 bytes

Programa completo Salidas separadas por espacios a STDOUT.

'\.'R','2⍕×\.01,142 2.5 2

Pruébalo en línea!

2 2.5 2 la lista;
[2,2.5,2]

14⍴ cíclicamente r eshape a la longitud 14;
[2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

.01 anteponer 0.01;
[0.01,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

×\ multiplicación acumulativa;
[0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100,200,500]

2⍕ formato con dos decimales;
" 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 50.00 100.00 200.00 500.00"

 ceder eso (para separar ','de 2)

'\.'⎕R',' PCRE R períodos EColoque con comas;
" 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00"

Adán
fuente
4

R 70 , 50 bytes

inspirado en @Giuseppe:

format(c(1,2,5)*10^rep(-2:2,e=3),ns=2,de=",",sc=F)

Pruébalo aquí!

Sin golf

format(c(1,2,5)*10^rep(-2:2, each = 3),
   nsmall = 2, 
   decimal.mark = ",",
   scientific = FALSE)
AndriusZ
fuente
Solo pude manejar 56 usando un método similar, solo con un t (externo ()) en lugar del rep (). Sin embargo, no estoy seguro de si se nos permite ese espacio en blanco principal, que costaría 4 bytes solucionarlo.
CriminallyVulgar
3

JavaScript (ES6), 83 bytes

Devuelve una matriz.

_=>[...'125'.repeat(k=5)].map(c=>(c*(c-1?k:k*=10)/5e3).toFixed(2).split`.`.join`,`)

Manifestación


Versión recursiva (ES7), 84 bytes

Devuelve una cadena con un espacio final.

f=(i=0)=>i<15?('125'[i%3]/100*10**(i/3|0)).toFixed(2).split`.`.join`,`+' '+f(i+1):''

Manifestación

Arnauld
fuente
3

Python 2 , 80 77 75 73 bytes

-2 bytes gracias a @ Mr.Xcoder
-1 byte gracias a @EriktheOutgolfer
-2 bytes gracias a @totallyhuman
-2 bytes gracias a @Lynn

print[('%.2f'%(v*m)).replace(*'.,')for m in.01,.1,1,10,100for v in 1,2,5]

Pruébalo en línea!

ovs
fuente
@EriktheOutgolfer se olvida de eliminar espacios
Mr. Xcoder
Olvidé especificar qué tipo de separador entre valores son aceptables. No se preocupe, la nueva línea es aceptable.
sergiol
2

Retina , 42 bytes


5$*0
0
$'1$`¶$'2$`¶$'5$`¶
..¶
,$&
m`^00?

Pruébalo en línea! Explicación: Hay quince valores, con 1, 2 y 5 en cada uno de los cinco lugares. La primera etapa inserta cinco ceros. La segunda etapa los repite en un cuadrado, luego cambia la diagonal final a 1, luego duplica esas líneas tres veces con 2 y 5. La tercera etapa inserta las comas y la última etapa elimina los ceros iniciales innecesarios.

Neil
fuente
1

Carbón , 37 bytes

”{➙∧N\`�4✳×″↶tι⦄|Q~(↥↗⁻“Q§U‴w⎇δUη◨÷¤G”

Pruébalo en línea! El enlace es a la versión detallada.

Yay, compresión!

totalmente humano
fuente
1

Bash , 88 bytes

s=125
for i in {0..14};{ printf %1.2f\  `bc<<<"scale=2;${s:i%3:1}*10^$[i/3-2]"`|tr . ,;}

Pruébalo en línea!

Justin Mariner
fuente
3
Después de todo ese trabajo duro, echo 0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00tiene la misma duración :(
Digital Trauma
@DigitalTrauma Pero eso no es divertido: P
Justin Mariner
1

JavaScript (ES6), 81 bytes

Devuelve una matriz.

_=>[...Array(13),b=.005,i=0].map(p=>(b*=++i%3?2:2.5).toFixed(2).replace(".",","))

Manifestación


Oki
fuente
1

Lisp común, 95 bytes

(dotimes(i 5)(dolist(j'(1 2 5))(princ(substitute #\, #\.(format()"~$ "(*(expt 10(- i 2))j))))))

Pruébalo en línea!

Renzo
fuente
1

Casco , 28 bytes

ṁm↔ṪöJ',CtN`J§¤eR'0≥≤2ḣ5"125

Pruébalo en línea!

Solo manipulación de cadenas, ya que Husk es terrible para formatear números de punto flotante.

Explicación

ṁm↔ṪöJ',CtN`J§¤eR'0≥≤2ḣ5"125
                        "125  The string "125".
                      ḣ5      The range [1,2,3,4,5].
   Ṫö                         Compute their outer product wrt this function:
                               Arguments are number n (say 3) and character c (say '5').
             §     ≥≤2         Compute max(0,n-2+1) and max(0,2-n+1),
                R'0            repeat '0' those numbers of times,
              ¤e               and put them into a list: ["00",""]
           `J                  Join with c: "005"
        CtN                    Split to lengths 2 and at most 3: ["00","5"]
     J',                       Join with ',': "00,5"
                              This gives a 2D array of the outputs reversed.
ṁ                             Map and concatenate
 m↔                           map reversal.
                              Implicitly print separated by newlines.
Zgarb
fuente
1

C ++, 138 120 bytes

-18 bytes gracias a MSalters

#include<iostream>
void p(){for(auto&a:{"0,0%d ","0,%d0 ","%d,00 ","%d0,00 ","%d00,00 "})for(int b:{1,2,5})printf(a,b);}

Versión codificada, por Lynn, 116 bytes

#include<ios>
void p(){puts("0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00");}
HatsuPointerKun
fuente
Debe incluir algunos ejemplos en línea para las personas que lo ven en ejecución. Ya lo hice por ti: tio.run/…
sergiol
No es necesario vy f: void p(){for(auto&a:{"0,0%d ","0,%d0 ","%d,00 ","%d0,00 ","%d00,00 "})for(int b:{1,2,5})printf(a,b);}- solo 120 bytes
MSalters
#include<ios>␤void p(){puts("0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00");}es de 116 bytes.
Lynn
1

R , 70 61 bytes

options(scipen=9,OutDec=",")
print(c(1,2,5)*10^rep(-2:2,e=3))

Pruébalo en línea!

-9 bytes gracias a Rui Barradas

Superado por AndriusZ

Giuseppe
fuente
Creo que no hay 1000 €, 2000 € y 5000 €
AndriusZ
Puede guardar 5 bytes eliminandoprint
AndriusZ
mezclando sus respuestas y las mías, podemos alcanzar 50 bytesformat(c(1,2,5)*10^rep(-2:2,e=3),ns=2,de=",",sc=9)
AndriusZ
@AndriusZ Creo que todavía necesitas una printrespuesta, pero debes publicarla tú mismo; Acabo de usar el método más bárbaro para cambiar la configuración, usando un formatpoco de pensamiento real.
Giuseppe
1
Puede guardar 8 bytes combinando los dos optionsen uno. options(OutDec=",",scipen=5).
Rui Barradas
1

05AB1E , 25 bytes

125S5иεN3÷°*т/'.',:N2›i0«

Devuelve una lista de cadenas.

Pruébalo en línea.

Explicación:

125                          # Push 125
   S                         # Split to a list of digits: [1,2,5]
    5и                       # Repeat it 5 times: [1,2,5,1,2,5,1,2,5,1,2,5,1,2,5]
      ε                      # Map each to:
       N3÷                   #  Integer-divide the map-index by 3
          °                  #  Take it to the power 10
           *                 #  Multiply the current map number with it
            т/               #  Divide it by 100
              '.',:          #  Replace all "." with ","
                   N2i      #  And if the map-index is larger than 2:
                       0«    #   Append a "0"

125S5иpodría ser •}•15∍(presionar comprimido 125; agrandarlo al tamaño 15:) 125125125125125y '.',:podría ser „.,`:(presionar cadena ".,", hacer estallar y empujar los caracteres como elementos separados a la pila) para el mismo conteo de bytes: Pruébelo en línea.
Además, N3÷°*т/se puede acortar a N3÷Í°*(donde Íresta 2), pero desafortunadamente necesitamos /que todos los números se conviertan en decimales, mientras que con la N3÷Í°*mayoría de los números seguirán siendo enteros.

Kevin Cruijssen
fuente
1

T-SQL, 104 bytes

SELECT FORMAT(p*n,'0\,00')
FROM(VALUES(1),(2),(5))a(n),(VALUES(1),(10),(100),(1E3),(1E4))b(p)
ORDER BY p,n

Los saltos de línea son solo para legibilidad.

Molesto más largo que la PRINTversión trivial (90 bytes):

PRINT'0,01 0,02 0,05 0,10 0,20 0,50 1,00 2,00 5,00 10,00 20,00 50,00 100,00 200,00 500,00'
BradC
fuente
Puede agregar a su respuesta una demostración en línea: rextester.com/IBKO53221
sergiol
Y elimine las nuevas líneas para que sea más deportivo: rextester.com/ZANC22480
sergiol
0

Retina , 58 bytes


¶0¶00¶000¶0000¶
.*¶
1$&2$&5$&
^
¶
+`¶(.?.?¶)
¶0$1
..¶
,$&

Pruébalo en línea!

ovs
fuente
1
Verifiqué dos veces con una pregunta al OP: los ceros iniciales no son aceptables :(
Jonathan Allan
Debes arreglar tu publicación de acuerdo con la observación de @JonathanAllan. JonathanAllan, gracias
sergiol
@sergiol lo arregló
ovs
0

Ruby , 66 62 bytes

-2.upto 2{|m|[1,2,5].map{|v|$><<('%.2f '.%v*10**m).tr(?.,?,)}}

¡4 bytes más cortos gracias a Lynn !

Pruébalo en línea!

Cristian Lupascu
fuente
-2.upto 2{…}ahorra 3 bytes. '%.2f '.%v*10**mahorra un byte (¡llamando al %método!)
Lynn
0

C # (.NET Core) , 107 bytes

Console.Write("0,01{0}2{0}5 0,10 0,20 0,50 1{1}2{1}5{1}1{2}2{2}5{2}10{2}20{2}50{2}"," 0,0",",00 ","0,00 ");

Ejecutarlo

ronquido
fuente
0

JavaScript: 96 bytes

x=>{for(o="",b=-2;b<3;b++)for(n of[1,2,5])o+=(n*10**b).toFixed(2).replace(".",",")+" ";return o}

Y aquí hay un enfoque funcional un poco más largo (98 caracteres):

x=>[].concat.apply([],[.01,.1,1,10,100].map(n=>[n,n*2,n*5])).map(n=>n.toFixed(2).replace(".",","))
Matt Consto
fuente
0

Tcl , 80 bytes

lmap d {-2 -1 0 1 2} {lmap c {1 2 5} {puts [regsub \\. [format %.2f $c\e$d] ,]}}

Pruébalo en línea!

Tcl , 90 bytes

lmap d {.01 .1 1 10 100} {lmap c {1 2 5} {puts [regsub \\. [format %.2f [expr $c*$d]] ,]}}

Pruébalo en línea!

¡Todavía muy largo, jugando al golf más tarde!

sergiol
fuente