Koin dan uang kertas Euro

26

Karena mayoritas negara yang menggunakan Euro memiliki ,pemisah desimal, Anda harus menggunakannya juga.

Tugasnya adalah untuk mengeluarkan semua nilai koin dan catatan Euro dalam urutan menaik. Anda juga harus meletakkan trailing ,00pada nilai integer.

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

Saya menerima keluaran untuk stdout atau fungsi yang mengembalikan array / daftar. Jika output akan stdout, pemisah yang dapat diterima antara nilai adalah: spasi, tab, atau baris baru.

Tidak akan ada jawaban yang diterima, kecuali saya melihat seseorang yang saya temukan sangat kreatif.

, jadi saya ingin tahu jawaban tersingkat berdasarkan bahasa.

Memperbarui:

Angka 0nol di depan tidak dapat diterima. Maaf, saya harus menjelaskan sebelumnya.

Pembaruan 2:

Juga dapat diterima fungsi yang mengembalikan string.

sergiol
sumber
1
dapatkah ada trailing space?
dzaima
1
@zaza: ya. :)
sergiol
1
Apakah nol di depan dapat diterima (seperti 000,01dll.)?
Jonathan Allan
8
Jawaban yang diterima adalah jawaban yang memenangkan tantangan. Anda bisa menerima jawaban terpendek atau tidak menjawab sama sekali, tetapi bukan jawaban sewenang-wenang.
Dennis
2
@KevinCruijssen: Lihat jawaban Dennis untuk referensi: codegolf.stackexchange.com/a/141484/29325
sergiol

Jawaban:

27

Pure Bash, 48

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

Cobalah online .

Trauma Digital
sumber
Permainan yang bagus! Anda mendapat tanda centang!
sergiol
3
Saya tidak pernah memperhatikan polanya ... dan saya telah menggunakan mata uang selama 15 tahun ..
Stephan Bijzitter
@StephanBijzitter banyak mata uang bekerja seperti itu.
NieDzejkob
7

Japt , 23 22 byte

-1 byte terima kasih kepada @Shaggy

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

Mengembalikan array string.

Cobalah online! dengan -Rflag ke item output array pada baris terpisah.

Justin Mariner
sumber
Lakukan multiline selama 22 byte .
Shaggy
7

Python 2 , 72 byte

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

Cobalah online!

Ekspresi 5>>~x%3memetakan bilangan bulat non-negatif 1, 2, 5, 1, 2, 5...

Ia bekerja karena 5, 2, 1adalah berturut kanan bitshifts dari 5( 0b1010b100b1); kami berputar melalui mereka mundur.

Lynn
sumber
6

Arang , 36 byte

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

Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:

   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
sumber
6

SOGLOnline offline, 27 26 25 24 23 22 21 byte

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

Coba Di Sini!

Tautan online tidak menunjukkan angka nol di belakangnya, tetapi versi luring melakukannya karena Javas BigDecimals bagus.

Penjelasan:

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

UNTUK dijalankan di penerjemah offline, unduh SOGLOnlines repositori , buka kompiler / interpreter, buka .pdefile apa saja dengan Memproses , lalu lakukan file -> ekspor untuk OS Anda (jika tidak, Anda tidak dapat memberikan argumen ke program Pemrosesan: /), dan kemudian jalankan program yang dikompilasi dengan argumen ke jalur file dengan kode. Kemudian, stdout akan memuat ini .

2L¼2¹5∙īυ;{⁴Ζ.,ŗP*untuk 18 byte hampir berfungsi tetapi jumlah nol tumbuh, menghasilkan 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(baris diganti dengan spasi)

dzaima
sumber
2
Format output salah: "Anda juga harus meletakkan trailing ,00pada nilai integer." (Saya membayangkan ini juga dimaksudkan untuk menyertakan jejak di ,0mana sesuai)
Jonathan Allan
Anda harus memperbaiki posting Anda sesuai dengan pengamatan @JonathanAllan. JonathanAllan, terima kasih
sergiol
@ JonathanAllan: Hmmmpf, izinkan saya mengambil komentar Anda dengan sebutir garam. Penulis posting mengatakan: " Tautan online tidak menunjukkan angka nol, tetapi versi luring memang bagus karena Javas BigDecimals bagus. ". Jadi saya tidak punya cara untuk memeriksa apakah skrip berperilaku baik atau tidak pada versi offline.
sergiol
@sergiol Ah, saya merindukan teks itu. Saya ingin tahu mengapa penerjemah online diterapkan secara berbeda dalam hal ini - dzaima ...?
Jonathan Allan
Saya percaya interpreter online ditulis dalam JavaScript sedangkan yang offline ditulis dalam Processing. Juga solusi tidak harus dapat diuji secara online. : P
totallyhuman
6

Java 8, 109 108 81 80 byte

Terima kasih kepada @ OlivierGrégoire untuk ide Lokal

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

Cobalah online!

Roberto Graham
sumber
Anda dapat menyimpan byte dengan beralih ke parameter yang tidak digunakan (meta post ini) : Cobalah online
Justin Mariner
100 byte .
Olivier Grégoire
2
81 byte . Bekerja pada sistem saya karena lokal default saya adalah be_FR. "Bekerja di sistem saya" sudah cukup baik. Saya tidak dapat menemukan meta-post yang ditautkan dengan ini, tetapi Anda dapat menggunakannya. Untuk mensimulasikannya, miliki saja Locale.setDefault(Locale.FRENCH);di bagian TIO yang tidak bersaing.
Olivier Grégoire
1
@ OlivierGrégoire Ini adalah meta-post yang relevan , dan Anda memang benar bahwa itu diperbolehkan. Saya bahkan meminta OP untuk memverifikasi, dan dia menghubungkan saya dengan jawaban Dennis dengan tautan ke pos meta ini.
Kevin Cruijssen
1
80 byte: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 byte

Program lengkap. Output ke ruang-dipisahkan ke STDOUT.

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

Cobalah online!

2 2.5 2 Daftar;
[2,2.5,2]

14⍴ siklis r eshape dengan panjang 14;
[2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

.01 prepend 0,01;
[0.01,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

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

2⍕ format dengan dua desimal;
" 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"

 hasilkan itu (untuk memisahkan ','dari 2)

'\.'⎕R',' PCRE R eplace period dengan koma;
" 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ám
sumber
4

R 70 , 50 byte

terinspirasi oleh @Giuseppe:

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

Coba di sini!

Tidak disatukan

format(c(1,2,5)*10^rep(-2:2, each = 3),
   nsmall = 2, 
   decimal.mark = ",",
   scientific = FALSE)
AndriusZ
sumber
Saya hanya bisa mengelola 56 menggunakan metode yang sama, hanya dengan t (luar ()) daripada rep (). Tidak yakin apakah kami diizinkan untuk menjalankan spasi putih, itu akan membutuhkan biaya 4 byte untuk diperbaiki.
CriminallyVulgar
3

Pyth , 37 byte

smmX%"%.2f"*dk\.\,[1 2 5)[.01.1 1T^T2

Cobalah online!

Pyth , 37 byte

Akan memendek dalam beberapa menit.

V[.01.1 1T^T2)V[1 2 5)X%"%.2f"*NH\.\,

Cobalah online!

Tuan Xcoder
sumber
3

JavaScript (ES6), 83 byte

Mengembalikan array.

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

Demo


Versi rekursif (ES7), 84 byte

Mengembalikan string dengan spasi tambahan.

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

Demo

Arnauld
sumber
3

Python 2 , 80 77 75 73 byte

-2 byte terima kasih kepada @ Mr.Xcoder
-1 byte terima kasih kepada @EriktheOutgolfer
-2 byte terima kasih kepada @totallyhuman
-2 byte terima kasih kepada @Lynn

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

Cobalah online!

ovs
sumber
@EriktheOutgolfer lupa untuk menghapus spasi
Tn. Xcoder
Saya lupa menentukan jenis pemisah antara nilai yang dapat diterima. Jangan khawatir, baris baru dapat diterima.
sergiol
2

Retina , 42 byte


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

Cobalah online! Penjelasan: Ada lima belas nilai, dengan 1, 2 dan 5 di masing-masing dari lima tempat. Tahap pertama memasukkan lima 0s. Tahap kedua mengulangi mereka menjadi kotak, kemudian mengubah trailing diagonal menjadi 1s, lalu menduplikasi garis-garis itu tiga kali dengan 2 dan 5. Tahap ketiga memasukkan koma dan tahap terakhir menghilangkan nol di depan yang tidak perlu.

Neil
sumber
1

Arang , 37 byte

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

Cobalah online! Tautan adalah untuk versi verbose.

Yay, kompresi!

benar-benar manusiawi
sumber
1

Bash , 88 byte

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

Cobalah online!

Justin Mariner
sumber
3
Setelah semua kerja keras itu, 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,00adalah panjang yang sama :(
Digital Trauma
@DigitalTrauma Tapi itu tidak menyenangkan: P
Justin Mariner
1

JavaScript (ES6), 81 byte

Mengembalikan array.

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

Demo


Oki
sumber
1

Gangguan Umum, 95 byte

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

Cobalah online!

Renzo
sumber
1

Sekam , 28 byte

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

Cobalah online!

Hanya manipulasi string, karena Husk mengerikan dalam memformat angka floating point.

Penjelasan

ṁ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
sumber
1

C ++, 138 120 byte

-18 byte berkat 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 hardcoded, oleh Lynn, 116 byte

#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
sumber
Anda harus menyertakan beberapa contoh online untuk orang-orang yang melihatnya berjalan. Saya sudah melakukannya untuk Anda: tio.run/…
sergiol
Tidak perlu untuk vdan 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);}- hanya 120 byte
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");}adalah 116 byte.
Lynn
1

R , 70 61 byte

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

Cobalah online!

-9 byte berkat Rui Barradas

Dikalahkan oleh AndriusZ

Giuseppe
sumber
Saya pikir tidak ada € 1000, € 2000 dan € 5000
AndriusZ
Anda dapat menyimpan 5 byte dengan menghapusprint
AndriusZ
dengan mencampurkan jawaban Anda dan saya, kami dapat mencapai 50 byte -format(c(1,2,5)*10^rep(-2:2,e=3),ns=2,de=",",sc=9)
AndriusZ
@ AndriusZ Saya pikir Anda masih membutuhkan printjawaban itu, tetapi Anda harus mempostingnya sendiri; Saya hanya menggunakan metode paling barbar untuk mengubah pengaturan, menggunakan formatdiperlukan beberapa pemikiran yang sebenarnya.
Giuseppe
1
Anda dapat menyimpan 8 byte dengan menggabungkan keduanya optionsmenjadi satu. options(OutDec=",",scipen=5).
Rui Barradas
1

05AB1E , 25 byte

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

Mengembalikan daftar string.

Cobalah online.

Penjelasan:

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иbisa •}•15∍(tekan terkompresi 125; perbesar ke ukuran 15 125125125125125:) dan '.',:bisa „.,`:(tekan string ".,", pop dan dorong karakter sebagai item yang terpisah ke tumpukan) untuk byte-count yang sama: Coba online.
Juga, N3÷°*т/dapat disingkat menjadi N3÷Í°*(di mana Ímengurangi 2), tetapi sayangnya kita membutuhkan /sehingga semua angka menjadi desimal, sedangkan dengan N3÷Í°*sebagian besar angka akan tetap bilangan bulat.

Kevin Cruijssen
sumber
1

T-SQL, 104 byte

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

Jeda baris hanya untuk keterbacaan.

Mengganggu lebih lama dari PRINTversi sepele (90 byte):

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
sumber
Anda dapat menambahkan ke jawaban Anda demo online: rextester.com/IBKO53221
sergiol
Dan hapus baris baru agar lebih golf: rextester.com/ZANC22480
sergiol
0

Retina , 58 byte


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

Cobalah online!

ovs
sumber
1
Saya memeriksa ulang dengan pertanyaan ke OP - nol terkemuka tidak dapat diterima :(
Jonathan Allan
Anda harus memperbaiki posting Anda sesuai dengan pengamatan @JonathanAllan. JonathanAllan, terima kasih
sergiol
@sergiol memperbaikinya
ovs
0

Ruby , 66 62 byte

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

4 byte lebih pendek, berkat Lynn !

Cobalah online!

Cristian Lupascu
sumber
-2.upto 2{…}menghemat 3 byte. '%.2f '.%v*10**mmenghemat satu byte (memanggil %metode!)
Lynn
0

JavaScript - 96 byte

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

Dan inilah pendekatan fungsional yang sedikit lebih panjang (98 karakter):

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

Tcl , 80 byte

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

Cobalah online!

Tcl , 90 byte

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

Cobalah online!

Masih sangat lama, bermain golf lebih lambat!

sergiol
sumber