세계 빅 도사


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 tsp1/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.