유로 동전 및 메모


26

유로를 사용하는 대부분의 국가 ,는 소수점 구분 기호를 사용하므로이를 사용해야합니다.

이 작업은 유로 동전과 지폐의 모든 ​​값을 오름차순으로 출력하는 것입니다. 또한 ,00정수 값에 후행 을 넣어야 합니다.

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

stdout에 대한 출력 또는 배열 / 목록을 반환하는 함수를 모두 허용합니다. 출력이 stdout 인 경우 공백, 탭 또는 줄 바꿈 값 사이에 허용되는 구분 기호는 다음과 같습니다.

내가 매우 창의적으로 생각하는 것을 보지 않으면 받아 들여질만한 대답이 없을 것입니다.

이므로 언어별로 짧은 답변을 알고 싶습니다.

최신 정보:

선행 00은 허용되지 않습니다. 죄송합니다. 전에 명확히해야합니다.

업데이트 2 :

문자열을 반환하는 함수도 허용됩니다.


1
후행 공간이있을 수 있습니까?
dzaima

1
@dzaima : 그렇습니다. :)
sergiol

1
선행 0을 허용 000,01합니까 (예 : 등)?
Jonathan Allan

8
허용되는 답변은 도전에서이기는 답변입니다. 가장 짧은 답변을 받거나 전혀 답변하지 않을 수 있지만 임의의 답변은 할 수 없습니다.
Dennis

2
@KevinCruijssen : 참조 참조 데니스 답 : codegolf.stackexchange.com/a/141484/29325
sergiol

답변:




7

파이썬 2 , 72 바이트

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

온라인으로 사용해보십시오!

표현이 5>>~x%3에 음이 아닌 정수를 매핑 1, 2, 5, 1, 2, 5...

때문에 작품 5, 2, 1의 연속 오른쪽 bitshifts은 5( 0b1010b100b1); 우리는 그것들을 거꾸로 순환시킵니다.


6

, 36 바이트

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

온라인으로 사용해보십시오! 링크는 자세한 버전의 코드입니다. 설명:

   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

SOGL 온라인 오프라인, 27 26 25 24 23 22 21 바이트

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

여기 사용해보십시오!

온라인 링크에는 후행 0이 표시되지 않지만 오프라인 버전은 Java BigDecimal이 좋으므로 오프라인 버전이 표시됩니다.

설명:

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

오프라인 인터프리터에서 실행하려면 SOGLOnlines 리포지토리를 다운로드 하고 컴파일러 / 인터프리터로 이동 한 후 Processing으로.pde 파일을 연 다음 파일-> OS 내보내기를 수행하십시오 (그렇지 않으면 처리 프로그램에 인수를 제공 할 수 없음 : /), 그런 다음 코드로 파일의 경로에 대한 인수를 사용하여 컴파일 된 프로그램을 실행하십시오. 그런 다음 stdout에 this 가 포함 됩니다.

2L¼2¹5∙īυ;{⁴Ζ.,ŗP*18 바이트 동안 거의 작동하지만 제로 양이 증가하여 줄 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바꿈이 공백으로 바 replaced


2
출력 형식이 올바르지 않습니다. " ,00정수 값 에도 후행 을 입력해야 합니다." (나는 이것이 ,0적절한 경우 후행을 포함하기위한 것 같아요 )
Jonathan Allan

@JonathanAllan의 관찰에 따라 게시물을 수정해야합니다. JonathanAllan, 감사
sergiol

@JonathanAllan : Hmmmpf, 소금 알갱이로 여러분의 의견을 들려 드리겠습니다. "저자 온라인 링크는 후행 0을 표시하지 않지만 오프라인 버전은 Javas BigDecimals가 훌륭합니다. "라고 말합니다. 따라서 스크립트가 오프라인 버전에서 제대로 작동하는지 여부를 확인할 방법이 없습니다.
sergiol

@sergiol 아, 나는 그 텍스트를 놓쳤다. 온라인 통역사가 왜 이와 관련하여 다르게 구현되는지 궁금합니다-dzaima ...?
Jonathan Allan

나는 믿는다 온라인 통역은 그동안 자바 스크립트로 작성된 오프라인 하나 처리로 작성되었습니다. 또한 솔루션은하지 않습니다 온라인 테스트 할 수. : P
완전히 인간적인

6

자바 8 109 108 81 80 바이트

로케일 아이디어를위한 @ OlivierGrégoire에게 감사합니다

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

온라인으로 사용해보십시오!


사용하지 않는 매개 변수 (메타 포스트) 로 전환하여 바이트를 절약 할 수 있습니다 . 온라인 시도
Justin Mariner


2
81 바이트 . 기본 로캘이 be_FR이기 때문에 시스템에서 작동합니다. "내 시스템에서 작업하기"는 충분합니다. 이것에 연결된 메타 포스트를 찾을 수 없지만 사용할 수 있습니다. 이를 시뮬레이션하려면 Locale.setDefault(Locale.FRENCH);TIO의 비경쟁 부분에 있어야합니다.
Olivier Grégoire

1
@ OlivierGrégoire 여기에 관련 메타 포스트 가 있으며 실제로 허용됩니다. 나는 심지어 OP에게 확인을 요청했고, 그는 이 메타 포스트에 대한 링크로 Dennis 의 답변에 나를 연결시켰다 .
Kevin Cruijssen

1
80 바이트 :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 바이트

완전한 프로그램. 공백으로 구분하여 STDOUT으로 출력합니다.

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

온라인으로 사용해보십시오!

2 2.5 2 목록;
[2,2.5,2]

14⍴ 주기적 r에 길이 14 eshape 단계;
[2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

.01 0.01을 첨가하다;
[0.01,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5,2,2,2.5]

×\ 누적 곱셈;
[0.01,0.02,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100,200,500]

2⍕ 소수점 이하 두 자릿수;
" 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"

 (분리하는 것을 수득 ','에서 2)

'\.'⎕R',' PCRE R 쉼표 eplace 기간;
" 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 바이트

@Giuseppe에서 영감을 얻은 것 :

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

여기 사용해보십시오!

언 골프

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

rep () 대신 t (outer ())를 사용하여 비슷한 방법을 사용하여 56 만 관리 할 수있었습니다. 앞 공백이 허용되는지 확실하지 않으면 수정하는 데 4 바이트가 필요합니다.
CriminallyVulgar


3

자바 스크립트 (ES6), 83 바이트

배열을 반환합니다.

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

데모


재귀 버전 (ES7), 84 바이트

후행 공백이있는 문자열을 반환합니다.

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

데모


3

파이썬 2 , 80 77 75 73 바이트

@ Mr.Xcoder
덕분에
-2 바이트 @EriktheOutgolfer 덕분에 -1 바이트 @totallyhuman 덕분에 -2 바이트 @Lynn 덕분에
-2 바이트

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

온라인으로 사용해보십시오!


@EriktheOutgolfer 는 공백을 제거하는 것을 잊었습니다
Mr. Xcoder

값 사이에 어떤 종류의 구분 기호가 허용되는지 지정하는 것을 잊었습니다. 걱정하지 마십시오. 줄 바꿈이 허용됩니다.
sergiol

2

레티 나 , 42 바이트


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

온라인으로 사용해보십시오! 설명 : 5 개 위치에 각각 1, 2 및 5의 값이 15 개 있습니다. 첫 번째 단계는 5 개의 0을 삽입합니다. 두 번째 단계는 사각형으로 반복 한 후 후행 대각선을 1로 변경 한 다음 해당 줄을 2와 5로 세 번 복제합니다. 세 번째 단계는 쉼표를 삽입하고 마지막 단계는 불필요한 선행 0을 제거합니다.




1

자바 스크립트 (ES6), 81 바이트

배열을 반환합니다.

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

데모




1

껍질 , 28 바이트

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

온라인으로 사용해보십시오!

Husk은 부동 소수점 숫자를 형식화하는 데 끔찍하기 때문에 문자열 조작 만하면됩니다.

설명

ṁ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 ++, 138120 바이트

MSalters 덕분에 -18 바이트

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

Lynn의 하드 코딩 된 버전, 116 바이트

#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");}

실행중인 사용자를위한 온라인 예제를 포함해야합니다. 나는 이미 당신을 위해 그것을했다 : tio.run/…
sergiol

필요 없음 vf: 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);}- 단지 120 바이트
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");}116 바이트입니다.
Lynn

1

R , 70 61 바이트

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

온라인으로 사용해보십시오!

Rui Barradas 덕분에 -9 바이트

AndriusZ에 의해 outgolfed


나는 1000 €, 2000 € 및 5000 €가 없다고 생각합니다.
AndriusZ

print
AndriusZ

당신과 내 대답을 혼합함으로써 우리는 50 바이트를 달성 할 수 있습니다format(c(1,2,5)*10^rep(-2:2,e=3),ns=2,de=",",sc=9)
AndriusZ

@AndriusZ 아직도 print답이 필요하다고 생각 하지만 직접 게시해야합니다. 방금 가장 야만적 인 방법을 사용하여 format필요한 실제 생각을 사용하여 설정을 변경했습니다 .
주세페

1
두 바이트 options를 하나로 결합하여 8 바이트를 절약 할 수 있습니다 . options(OutDec=",",scipen=5).
Rui Barradas


1

05AB1E , 25 바이트

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

문자열 목록을 반환합니다.

온라인으로 사용해보십시오.

설명:

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и•}•15∍(푸시 압축 125, 크기 15에 확대 : 125125125125125)과 '.',:„.,`:(푸시 문자열을 ".", 팝업 스택에 분리 된 항목으로 문자를 밀어) 같은 바이트 카운트 : 온라인으로보십시오.
또한 ( 빼기 2로) N3÷°*т/단축 할 수는 있지만 불행히도 모든 숫자가 소수가되는 반면 대부분의 숫자는 정수로 유지됩니다.N3÷Í°*Í/N3÷Í°*


1

T-SQL, 104 바이트

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

줄 바꿈은 가독성을위한 것입니다.

성가신 PRINT버전 (90 바이트) 보다 더 길다 :

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'

귀하의 답변에 온라인 데모를 추가 할 수 있습니다 : rextester.com/IBKO53221
sergiol

더 golfy 될 수 있도록 그리고 줄 바꿈을 제거 : rextester.com/ZANC22480
sergiol





0

자바 스크립트-96 바이트

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

그리고 약간 더 긴 (98 자) 기능적 접근 방식이 있습니다.

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


0

Tcl , 80 바이트

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

온라인으로 사용해보십시오!

Tcl , 90 바이트

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

온라인으로 사용해보십시오!

아직도 더 길고 나중에 더 골프를!


실패한 outgolf : tio.run/##BcFBCoAgEAXQq/…
sergiol

리터럴과 동일한 바이트 범위를 차지합니다. "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 "
sergiol


를 사용 하면 더 많은 바이트 timelmap렌더링됩니다.set d -3;time {incr d;lmap c {1 2 5} {puts [regsub \\. [format %.2f $c\e$d] ,]}} 5
sergiol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.