루비 171 바이트
함수 인수로 입력하십시오. 후행 공백이있는 stdout으로 출력 (필요한 경우 수정 가능)
->s{a,b,c,d=s.split.map{|z|[z[-1],z.to_f]}.sort.flatten
%w{EA9.EAAVAA.WVA GS;.A?#WWV.RRR}.map{|w|m=w[n=(a+c+?!).sum%10].ord;print (b**(m%9-4)*d**(m/9-5))**0.5,w[n+7],' '}}
설명
모든 공식은 b**x*d**y
b & d가 두 입력 값이고 x & y가 거듭 제곱 인 형식으로 표현할 수 있습니다 . 골프의 이유 때문에 (b**x*d**y)**0.5
x와 y가 -4에서 4 사이의 정수가됨을 의미 하는 표현 이 마침내 선호되었습니다.
다음 표는 필요한 표현식 (입력은 알파벳순으로 정렬 됨)과 제곱의 인코딩 된 값을 보여줍니다. x와 y가 두 배의 거듭 제곱 인 경우, 그것들은 (x+4)+(y+4)*9+9
또는 동등하게 인코딩됩니다 (x+4)+(y+5)*9
. 이것은 모든 인코딩을 인쇄 가능한 ASCII 범위에 넣습니다. 간결함을 위해 공식에서 전력 연산자는 생략되었습니다.
n
입력 유닛 심볼들로부터 만들어진 일종의 체크섬이고; 0,1,2,4,5,6 값을 사용할 수 있습니다 (3은 사용되지 않습니다).
n formula 1 formula 2 formula 1 formula 2
value powers x+4 y+4 encoding powers x+4 y+4 encoding
0 A*R=V A2*R=W 1 1 6 6 69 E 2 1 8 6 71 G
1 R-1*V=A R-1*V2=W -1 1 2 6 65 A -1 2 2 8 83 S
2 R-.5*W.5=A R.5*W.5=V -.5 .5 3 5 57 9 .5 .5 5 5 59 ;
3 . . . .
4 A*V=W A-1*V=R 1 1 6 6 69 E -1 1 2 6 65 A
5 A-1*W=V A-2*W=R -1 1 2 6 65 A -2 1 0 6 63 ?
6 V-1*W=A V2*W-1=R -1 1 2 6 65 A 2 -1 8 2 35 #
테스트 프로그램에서 언 골프
f=->s{
a,b,c,d=s.split.map{|z|[z[-1],z.to_f]}. #split the input into an array [[symbol1,value1],[symbol2,value2]]
sort.flatten #sort alphabetically by symbol and flatten to assign the 4 objects to different variables
n=(a+c+?!).sum%10 #sum the ascii codes of the symbols (plus that of ! for good value distribution) and take mod 10. gives a number 0..6 (3 is not used)
%w{EA9.EAAVAA.WVA GS;.A?#WWV.RRR}. #for each of the outputs, there is a 14 character string. 1st 7 characters encode powers, 2nd 7 characters are output symbol
map{|w| #iterate through the 2 outputs
m=w[n].ord #select one character according to value of n and convert to a number encoding the powers to raise the two inputs to
print (b**(m%9-4)*d**(m/9-5))**0.5,w[n+7],' '#decode the powers, evaluate the expression and output, append the unit symbol and a space
}
}
f["6W 3A"]
puts
f["12V 120R"]
puts
f["10A 10V"]
puts
f["8R 1800W"]
puts
f["6W 2V"]
puts
f["2A 3R"]
puts
산출
2.0V 0.6666666666666666R
0.1A 1.2W
100.0W 1.0R
15.0A 120.0V
3.0A 0.6666666666666666R
6.0V 12.0W