세계 빅 도사


37

당신은 세계에서 가장 유명한 인도 레스토랑에서 수프 요리사 의 직책을 제공받은 재능있는 젊은 요리사입니다 . 인도 요리를 준비하는 데는 거의 경험이 없지만 결정을 내렸으므로 스스로를 증명하기 시작했습니다. 최고의 도사 전문가 가되기로 결심했습니다 . 이를 위해서는 dosa 생성을 마스터해야 할뿐만 아니라 임의로 크기를 조정할 수 있어야합니다.

dosa 반죽에 대한 유망한 레시피 를 찾으십시오 .

  • 밥 1 컵
  • ukda chawal 1 컵
  • 우라 달 1/2 컵
  • 포하 1/4 컵
  • 1/4 tsp methi 씨앗
  • 맛볼 소금
  • 필요에 따라 물

이것은 길이가 약 1/2 미터 인 dosa를 만듭니다 .

도전

레스토랑 직원에게 주어진 레시피의 정수 배수로 단일 dosa를 만드는 데 필요한 것을 정확하게 알려주는 프로그램이나 함수를 작성하십시오 . 주방의 공간이 좁기 때문에 코드를 최대한 짧게 만들고 싶습니다. 가장 짧은 코드가 이기고 이전 게시물로 연결됩니다.

계량 스푼 및 컵은 1/4, 1/3, 1/2, 2/3, 3/4 및 1의 표준 크기로 제공됩니다. 주방 직원의 분노를 피하기 위해 측정 단위 는 이 숫자는 표준 크기 만 사용하여 혼합 숫자로 쓸 수 있습니다 .

측정은 다음 규칙에 따라 더 큰 크기로 전파됩니다.

  • 3 작은 술 == 1 큰술
  • 4 큰술 == 1/4 컵

따라서 12의 배수 인 1/4 tsp methi 씨앗은 1 큰술이됩니다. 그러나 13의 배수 인 경우 3 1/4 tsp가됩니다. 그렇지 않으면 표준 크기로 표시되지 않습니다.

대기 직원은 dosa를 테이블로 운반 할 수 있어야합니다. dosa가 운송 중 중단되지 않도록하려면 dosa를 팀으로 운반하도록 지시하십시오. 각 사람은 최대 1 미터의 도사를 휴대 할 수 있습니다. 따라서 단일 또는 이중 레시피의 경우 한 사람 만 수행하면됩니다. 대기 직원은 소수로 자르면 덜 효과적이므로 항상 많은 수의 웨이터 가 필요합니다.

입력

STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 양의 정수를 사용하십시오. 이 숫자는 레시피의 스케일링 계수를 나타내며 1만큼 작지만 2 32 -1 보다 작을 수 없습니다 . 해당 범위의 정수일 수 있습니다.

산출

입력에 따라 스케일링 된 재료 목록과 dosa 운반에 필요한 웨이터 수를 STDOUT (또는 가장 가까운 대안)에 인쇄하십시오. 재료는 위의 순서와 아래의 형식으로 나열되어야합니다.

예

입력:

2

산출:

2 cups rice
2 cups ukda chawal
1 cup urad dal
1/2 cup poha
1/2 tsp methi seeds
Salt to taste
Water as needed
1 waiter

값이 1보다 크면 "cup"이 "cups"로 변경됩니다. "tsp"는 변경되지 않습니다. "컵"과 같은 "웨이터"는 복수가됩니다.

입력:

5

산출:

5 cups rice
5 cups ukda chawal
2 1/2 cups urad dal
1 1/4 cups poha
1 1/4 tsp methi seeds
Salt to taste
Water as needed
3 waiters

1보다 큰 정수가 아닌 값은 혼합 된 숫자, 즉 정수와 감소 된 분수로 표시됩니다.

참고 : 제목은 관련 비디오 에서 가져 옵니다 .


15
이제 우리는 요리사의 답변 을 할 누군가가 필요합니다 :)
— MickyT

11
대기 직원은 소수로 자르면 덜 효과적이므로 항상 많은 수의 웨이터가 필요하다”고 말했다. ... 얼마나 덜 효과적입니까?
— LivingInformation

4
@LivingInformation 글쎄, 다리 한 켤레 만 식탁에 음식을 가지고 다니는 것을 본 적이 있습니까?
— Alex A.

7
@AlexA. 당신은하지 않습니까?
— LivingInformation

7
@MickyT : 시도했지만 CPAN의 Chef 인터프리터에서 몇 가지 버그가 발생했습니다. (a) 출력값은 공백이 아닌 경우를 제외하고 공백으로 구분됩니다. (b) 혼합 번호 처트니 하위 레시피 (또는 비교 마인드 요거트?)에 대해 뭔가 통역사가 모호한 오류 메시지로 사망하고 있습니다.
— Tim Pederick

답변:


9

CJam, 214 바이트

ri[48_24C.25]{[48ZX]f{:DW$@*\md_D{_@\%}h;:M/iDM/}3/_{W=5<}#:I=[(\'/*]{S+_0e=!*}/["cup"2$2a>'s*+"tbsp"_'b-]I=S}%4/"rice
ukda chawal
urad dal
poha
methi seeds
Salt to taste
Water as needed"N/.+N*N@)2/" waiter"1$1>'s*

CJam 통역사 에서 온라인으로 사용해보십시오 .


아직 골프는 아니지만 늦었고 첫 번째 답변을 게시하고 싶었습니다.
— Dennis

바운티 기간이 종료되면 요리사 답변이 게시되지 않고 귀하의 답변이 가장 짧은 유효한 답변이므로 바운티에서 승리합니다. 첫 도전에 참여해 주셔서 감사합니다. :)
— Alex A.

7

자바 스크립트 (ES6), 443 자

이것은 골프에 매우 재미 있었지만 결과는 내가 기대했던 것보다 상당히 길다.

d=n=>(y=s=>n<s?' cup':' cups',z=s=>n/s|0,A=' 1/4',B=' 1/2',C=' 3/4',n+y(2)+` rice
${n+y(2)} ukda chawal
${(n%2<1?n/2:z(2)+B)+y(3)} urad dal
${((e=n%4)<1?n/4:z(4)+(e<2?A:e<3?B:C))+y(5)} poha
${(n%48<1?z(192)+((c=n/48%4)>2?C:c>1?B:c>0?A:'')+y(193):n%3<1?z(12)+((f=n/3%4)>2?C:f>1?B:f>0?A:'')+' tbsp':(z(4)+(e>2?C:e>1?B:e>0?A:''))+' tsp')} methi seeds
Salt to taste
Water as needed
${(b=Math.ceil(n/2))} waiter`+(b<2?'':'s')).replace(/\n0 /g,'\n')

사용해보십시오 :

2^32또는을 포함한 최대 값까지 허용합니다 4294967296. 그 후, 'urad dal'은 홀수에 넘쳐서 음수가됩니다.

기본적으로 정확한 양을 계산합니다. 운 좋게도 오직 methi 씨 만이 tsp / tbsp / cup 측정 값을 가져야합니다. 그렇지 않으면 이것은 훨씬 더 길었을 것입니다. (메티 시드 라인 만 155 자입니다!)

ES5에서는이 길이가 500 자 이상이었을 것입니다. 나는 ❤ ES6.

언제나 그렇듯이 제안은 대단히 감사합니다!

편집 1 : 그냥 규칙에 따라 실현 1 tsp으로 대체되어야한다 1/3 tbsp과 동일 2 tsp하고 2/3 tbsp,뿐만 아니라 16 tsp및 1/3 cup....


1
Math.ceil은 짧아 질 수 있고 -~, b=-~t/2 훨씬 짧습니다. 괄호를 제외 할 수도 있습니다
— Downgoat

@vihan 팁에 감사드립니다.하지만 이것은 정수가 아닌 사람들에게만 적용됩니다. -~1결과 2는 의도 된 결과가 아닙니다. 내가 찾을 수있는 가장 좋은 대안 b=-~((n-1e-9)/2)은 얼마 남지 않았으므로 지금은 그대로 유지하겠습니다.
— ETHproductions

3

커먼 리스프, 435

(lambda(n)(labels((k(y)(some(lambda(x)(integerp(* y x)))'(1 4/3 3/2 2 3 4)))(h(s m)(multiple-value-bind(q r)(floor m)(format()"~[~:;~:*~A ~]~[~:;~:*~A ~]~@? " q r s m)))(g(o &aux(h(/ o 3))(c(/ h 4)))(cond((k c)(h"cup~P"c))((k h)(h"tbsp"h))(t(h"tsp"o)))))(format t"~&~A rice
~Aukda chawal
~Aurad dal
~Apoha
~Amethi seeds
Salt to taste
Water as needed
~A waiter~:P
"(g(* n 12))(g(* n 12))(g(* n 6))(g(* n 3))(g(/ n 4))(ceiling(/ n 2)))))

약간 골퍼

(lambda (n)
  (labels ((k (y)
             (some (lambda (x) (integerp (* y x))) '(1 4/3 3/2 2 3 4)))
           (h (s m)
             (multiple-value-bind (q r)
                 (floor m)
               (format nil "~[~:;~:*~A ~]~[~:;~:*~A ~]~@?" q r s m)))
           (g (o &aux (h (/ o 3)) (c (/ h 4)))
             (cond ((k c) (h "cup~P" c)) ((k h) (h "tbsp" h)) (t (h "tsp" o)))))
    (format t "~&~A rice
~A ukda chawal
~A urad dal
~A poha
~A methi seeds
Salt to taste
Water as needed
~A waiter~:P
"
            (g (* n 12)) (g (* n 12)) (g (* n 6)) (g (* n 3)) (g (/ n 4))
            (ceiling (/ n 2)))))

모든 측정 값은로 표시됩니다 tsp. k함수 에 따라 g인쇄에 사용할 단위를 결정 h하고 적절한 인수 를 사용하여 형식화 함수 를 호출하십시오 .

  • k 인수를 1, 1/4, 1/3, 2/3, 4/3 단위의 배수로 표현할 수있는 경우 true를 리턴합니다.
  • g입력을 tbsp 수로, tbsp 수를 컵 수로 변환합니다 (질문에 나와 있음). 먼저 컵 단위, tbsp 단위 또는 tps 단위로 인쇄를 시도합니다.
  • h중 인쇄 조건부 서식 지시자를 사용 x, x y/z또는 y/z의 서식을 다음 s인수와 함께 m: 컵을 위해, s이다 "cup~P"에 따라 단어를 plurializes한다 m.

예시 (n = 17)

17 cups rice
17 cups ukda chawal
8 1/2 cups urad dal
4 1/4 cups poha
4 1/4 tsp methi seeds
Salt to taste
Water as needed
9 waiters

깔끔합니다. 잘 했어.
— Alex A.

3

R, 602 (603) 526 바이트

아직도 골프를 할 여지가 많이 있다고 생각하지만 시간이 부족하여 이에 대한 답변을 원했습니다.

function(i){S=gsub
M=i/c(1,5,60)
A=list(c(2,1),c(4,3),c(64,48))[[I<-max(which(M>=1))]]
B=c(4,12,192)[I]
V=c(' tsp',' tbsp',' cup')[I]
C=i%/%B
C=C+max((i%%B)%/%A*c(.3,.25))
cat(S('([ ]*)0 ','\\1',S('\\.3',' 1/3',S('\\.6',' 2/3',S('\\.5',' 1/2',S('\\.25',' 1/4',S('\\.75',' 3/4',paste0(i,' cup',if(i>1)'s',' rice
',i,' cup',if(i>1)'s',' ukda chawal
',i*.5,' cup',if(i>2)'s',' urad dal
',i*.25,' cup',if(i>4)'s',' poha
',C,V,if(C>1&I>2)'s',' methi seeds
Salt to taste
Water as needed
',ceiling(i*.5),' waiter',if(i>2)'s'))))))))}

5의 입력에는 이것이 1/3 tbsp 1/4 tsp methi seeds있지만 하나의 공통 단위로 표시되어야합니다. 1 1/4 tsp methi seeds(정신이 정확하다면) 그래야합니다 .
— Alex A.

@AlexA. 잘 알고 있습니다. 빨리 고칠 게요. 컵과 tbsp와 동일하다고 가정합니다.
— MickyT

그렇습니다. 모든 유닛에 대해 동일한 규칙이 적용됩니다. 그러나 곧 올바르겠다고 선의로 +1했습니다. 첫 도전에 참여해 주셔서 감사합니다. :)
— Alex A.

1

자바 스크립트 (Node.js) , 419 바이트

a=>(y=g=>a<g?" cup":" cups",z=g=>a/g|0,a+y(2)+` rice
${a+y(2)} ukda chawal
${(1>a%2?a/2:z(2)+(B=" 1/2"))+y(3)} urad dal
${(1>(e=a%4)?a/4:z(4)+(2>e?A=" 1/4":3>e?B:C=" 3/4"))+y(5)} poha
${1>a%48?z(192)+(2<(c=a/48%4)?C:1<c?B:0<c?A:"")+y(193):1>a%3?z(12)+(2<(f=a/3)?C:1<f?B:0<f?A:"")+" tbsp":z(4)+(2<e?C:1<e?B:0<e?A:"")+" tsp"} methi seeds
Salt to taste
Water as needed
${b=-~a/2|0} waiter`+(2>b?"":"s")).replace(`
0 `,`
`)

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.