Euro para ve notlar


26

Euro'yu kullanan ülkelerin çoğunluğunun ,ondalık ayırıcı olduğu gibi, bunu da kullanmalısınız.

Görev Euro madeni paralarının ve değerlerinin tüm değerlerini artan düzende vermektir. İzlemeyi ,00tam sayı değerlerine de koymalısınız .

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

Hem çıktıyı stdout'a ya da bir dizi / liste döndüren bir fonksiyona kabul ediyorum. Çıktı stdout ise, değerler arasındaki kabul edilebilir ayırıcılar: boşluk, sekme veya yeni satır.

Çok yaratıcı bulduğum bir tanesini görmezsem, kabul edilmiş bir cevap olmayacak.

, bu yüzden dile göre en kısa cevabı bilmek istiyorum.

Güncelleştirme:

Öne çıkan 0sıfırlar kabul edilemez. Üzgünüm, daha önce netleştirmeliyim.

Güncelleme 2:

Aynı zamanda bir string döndüren bir fonksiyon da kabul edilebilir.


1
takip eden bir boşluk olabilir mi?
dzaima

1
@ dzaima: evet. :)
sergiol

1
Baştaki sıfırlar kabul edilebilir mi ( 000,01vb.)?
Jonathan Allan

8
Kabul edilen cevap, mücadeleyi kazanan cevaptır. En kısa cevabı kabul edebilir veya hiç cevabı veremezsiniz, ancak keyfi bir cevabı veremezsiniz.
Dennis

2
@KevinCruijssen: Bkz. Dennis'in referans yanıtı: codegolf.stackexchange.com/a/141484/29325
sergiol

Yanıtlar:




7

Python 2,72 bayt

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

Çevrimiçi deneyin!

İfadesi 5>>~x%3için negatif olmayan tamsayılar eşler 1, 2, 5, 1, 2, 5...

Çünkü çalışır 5, 2, 1art arda sağ bitshifts olan 5( 0b1010b100b1); Onları geriye doğru döndürüyoruz.


6

Kömür , 36 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

   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

6

SOGLOnline çevrimdışı, 27 26 25 24 23 22 21 bayt

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

Burada dene!

Çevrimiçi bağlantı sondaki sıfırı göstermez, ancak çevrimdışı sürüm Javas BigDecimals'ın iyi olduğunu gösterir.

Açıklama:

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

Çevrimdışı tercümanda çalıştırmak için, SOGLOnlines deposunu indirin , derleyiciye / tercümana gidin, herhangi bir İşleme olan .pdedosyaları açın , ardından işletim sisteminiz için dosya -> dışa aktarın (aksi halde bir İşleme programına argümanlar veremezsiniz: /), ve sonra derlenmiş programı, kodun bulunduğu dosyanın yolunun argümanıyla yürütün. Ardından, stdout'u içerecektir bu .

2L¼2¹5∙īυ;{⁴Ζ.,ŗP*18 bayt için neredeyse işe yarıyor ancak sıfır miktar büyüyor, sonuçta 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(boşluklarla değiştirilen yeni satırlar)


2
Çıktı formatı yanlış: "İzlemeyi ,00tam sayı değerlerine de koymalısınız ." (Bunun ,0uygun olan yerlerde
Jonathan Allan

Gönderinizi @JonathanAllan'ın gözlemine göre düzeltmelisiniz. JonathanAllan, teşekkürler
sergiol

@JonathanAllan: Hmmmpf, yorumunuzu bir tuz tuzu ile alalım. Yazan yazar şöyle diyor: " Çevrimiçi bağlantı sondaki sıfırı göstermiyor, ancak çevrimdışı sürüm Javas BigDecimals'ın iyi olduğu gibi. " Bu yüzden, betiğin çevrimdışı sürümde iyi çalışıp çalışmadığını kontrol edemem.
sergiol

@sergiol Ah, bu metni özledim. Online tercümanın neden bu konuda farklı uygulandığını merak ediyorum - dzaima ...?
Jonathan Allan

Çevrimdışı olanı İşleme yazarken çevrimiçi tercümanın JavaScript'te yazıldığını düşünüyorum . Ayrıca çözümler çevrimiçi olarak test edilebilir olmak zorunda değildir . : P
totallyhuman

6

Java 8, 109 108 81 80 bayt

Locale fikri için @ OlivierGrégoire'a teşekkürler

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

Çevrimiçi deneyin!


Kullanılmayan bir parametreye geçerek bir bayt kaydedebilirsiniz (bu konuda meta yazı) : Çevrimiçi deneyin
Justin Mariner


2
81 bayt . Varsayılan yerel ayarım be_FR olduğundan sistemimde çalışıyor. "Sistemimde çalış" yeterince iyi. Buna bağlı meta gönderiyi bulamıyorum, ancak kullanabilirsiniz. Bunu simüle etmek için, sadece Locale.setDefault(Locale.FRENCH);TIO'nun rekabet etmeyen bir bölümüne sahip olun.
Olivier Grégoire

1
@ OlivierGrégoire İlgili meta-yazı burada ve gerçekten de buna izin veriliyor. OP'den onaylamasını bile istedim ve beni bu meta gönderinin bağlantısı olan Dennis'in cevabına bağladı .
Kevin Cruijssen

1
80 bayt: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 bayt

Tamamlanmış program STDOUT'a boşluğa ayrılmış çıkışlar.

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

Çevrimiçi deneyin!

2 2.5 2 liste;
[2,2.5,2]

14⍴ döngüsel olarak r , uzunluk 14'e düşer;
[2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

.01 0.01 hazırlamak;
[0.01,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

×\ birikimli çarpma;
[0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100,200,500]

2⍕ iki ondalık ile biçimlendirme;
" 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"

 (ayırmak için verim ','den 2)

'\.'⎕R',' PCRE R dönemleri virgülle;
" 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"


4

R 70 , 50 bayt

@Giuseppe'den ilham alan:

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

Burada dene!

Ungolfed

format(c(1,2,5)*10^rep(-2:2, each = 3),
   nsmall = 2, 
   decimal.mark = ",",
   scientific = FALSE)

Sadece 56'yı rep () yerine t (outer ()) kullanarak benzer bir yöntem kullanarak yönetebildim. Bu boşluk boşluğuna rağmen izin vermemize rağmen, bunun düzeltilmesi 4 byte olur.
CriminallyVulgar


3

JavaScript (ES6), 83 bayt

Bir dizi döndürür.

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

gösteri


Özyinelemeli sürüm (ES7), 84 bayt

Sonda boşluk olan bir dize döndürür.

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

gösteri


3

Python 2, 80 77 75 73 bytes

-2 bytes thanks to @Mr.Xcoder
-1 byte thanks to @EriktheOutgolfer
-2 bytes thanks to @totallyhuman
-2 bytes thanks to @Lynn

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

Try it online!


@EriktheOutgolfer forgets to remove spaces
Mr. Xcoder

I forgot to specify what kind of separator between values are acceptable. Don't worry, newline is acceptable.
sergiol

2

Retina, 42 bytes


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

Try it online! Explanation: There are fifteen values, with 1, 2 and 5 in each of five places. The first stage inserts five 0s. The second stage repeats them into a square, then changes the trailing diagonal into 1s, then duplicates those lines three times with 2 and 5. The third stage inserts the commas and the last stage removes unnecessary leading zeros.



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 . ,;}

Try it online!


3
After all that hard work, 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,00 is the same length :(
Digital Trauma

@DigitalTrauma But that's no fun :P
Justin Mariner

1

JavaScript (ES6), 81 bytes

Returns an array.

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

Demo



1

Common Lisp, 95 bytes

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

Try it online!


1

Husk, 28 bytes

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

Try it online!

Just string manipulation, since Husk is terrible at formatting floating point numbers.

Explanation

ṁ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.

1

C++, 138 120 bytes

-18 bytes thanks to 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);}

Hardcoded version, by 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");}

You should include some online example for people seeing it running. I already did it for you: tio.run/…
sergiol

No need for v and 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);} - just 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");} is 116 bytes.
Lynn

1

R, 70 61 bytes

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

Try it online!

-9 bytes thanks to Rui Barradas

Outgolfed by AndriusZ


I think there are no 1000€, 2000€ and 5000€
AndriusZ

You can save 5 bytes by removing print
AndriusZ

by mixing your and my answers we can achieve 50 bytes - format(c(1,2,5)*10^rep(-2:2,e=3),ns=2,de=",",sc=9)
AndriusZ

@AndriusZ I think you still need a print around that answer but you should post it yourself; I just used the most barbaric method to change the settings, using format required some actual thought.
Giuseppe

1
You can save 8 bytes by combining the two options into one. options(OutDec=",",scipen=5).
Rui Barradas


1

05AB1E, 25 bytes

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

Returns a list of strings.

Try it online.

Explanation:

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и could be •}•15∍ (push compressed 125; enlarge it to size 15: 125125125125125) and '.',: could be „.,`: (push string ".,", pop and push the characters as separated items to the stack) for the same byte-count: Try it online.
Also, N3÷°*т/ can be shortened to N3÷Í°* (where Í subtracts 2), but unfortunately we need the / so all the numbers becomes decimals, whereas with N3÷Í°* most numbers will remain integers.


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

Line breaks are for readability only.

Annoyingly longer than the trivial PRINT version (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'

You can append to your answer an online demo: rextester.com/IBKO53221
sergiol

And remove the newlines for it to be more golfy: rextester.com/ZANC22480
sergiol

0

Bubblegum, 41 bytes

00000000: 1dc5 8105 0040 1402 d055 1ae0 50d1 feab  .....@...U..P...
00000010: dd2f 788f 8fc2 e192 433c 5c42 e891 7049  ./x.....C<\B..pI
00000020: 11ab 67a6 b8bc 90f5 01                   ..g......

Try it online!


0

Retina, 58 bytes


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

Try it online!


1
I double-checked with a question to the OP - the leading zeros are not acceptable :(
Jonathan Allan

You should fix your post according to @JonathanAllan 's observation. JonathanAllan, thanks
sergiol

@sergiol fixed it
ovs



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}

And here's a slightly longer (98 characters) functional approach:

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


0

Tcl, 80 bytes

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

Try it online!

Tcl, 90 bytes

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

Try it online!

Still very long, golfing it more later!





using time to iterate instead of lmap renders more bytes: set d -3;time {incr d;lmap c {1 2 5} {puts [regsub \\. [format %.2f $c\e$d] ,]}} 5
sergiol
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.