세상을 파괴하려면 무엇이 필요합니까?


19

행성 의 중력 결합 에너지 는 모든 작은 조각을 분리하여 다른 조각과 공전하거나 충돌하지 않도록하는 데 필요한 에너지의 양입니다. 균일 한 구의 경우 Wikipedia는 다음 공식을 제공합니다.

E=3GM25아르 자형

G는 중력 상수 (6.672e-11 m 3 • kg -1 • s -2 )이고 M은 질량이며 R은 반경입니다.

내가 할 수 단순히 줄 (Joule) (kg • m이 계산에 대해이 도전을 2 •의 -2 될 것이라고 ...)하지만, 지루한 . 게다가 모든 사람이 줄을 이해하는 것은 아닙니다.

대신 다음 단위로 변환 해 봅시다.

  • TNT의 킬로톤 (4.184 조 줄, 속기 kilotons)
  • 히로시마 핵무기 (62.76 조 줄, 속기 nukes)
  • Hostess ™ Twinkies (560,000 줄, 속기 twinkies)
  • 킬로와트시 (정확하게 360 만 줄, 속기 kWh)
  • 질량 에너지 킬로그램 (1 kg 질량 에너지 = 299,792,458 2 줄, 속기 kg)

따라서 다음 입력을 사용하십시오.

  • 킬로그램 단위의 질량
  • 미터 단위의 반경
  • 사용할 단위를 나타내는 6 개의 개별 입력 중 하나

그리고 지정된 단위로 바인딩 에너지를 출력합니다. 속기 장치를 출력 끝에 추가하십시오.

규칙

  • 줄의 줄임말은 J입니다.
  • 약식 단위 나 숫자를 나누지 않는 한 임의의 공백이 허용됩니다.
  • 언어가 사용하는 형식에 상관없이 과학적 표기법이 허용됩니다.
  • 중요한 숫자는 4 개만 필요합니다. 부동 소수점을 적극 권장합니다.
  • Blah는 가장 짧은 대답을 바이트 단위로 나타냅니다.

테스트 사례

이 스프레드 시트로 생성됩니다 .

Mass (kg)   Radius (m)  J           kilotons    nukes       twinkies    kWh         kg
3.302E+23   2440000     1.789E+30   4.275E+17   2.850E+16   3.194E+24   4.969E+23   1.990E+13
4.869E+24   6052000     1.568E+32   3.748E+19   2.499E+18   2.800E+26   4.356E+25   1.745E+15
5.974E+24   6371000     2.242E+32   5.360E+19   3.573E+18   4.004E+26   6.229E+25   2.495E+15
6.419E+23   3390000     4.866E+30   1.163E+18   7.753E+16   8.689E+24   1.352E+24   5.414E+13
1.899E+27   69911000    2.065E+36   4.935E+23   3.290E+22   3.687E+30   5.736E+29   2.298E+19
5.685E+26   58232000    2.222E+35   5.310E+22   3.540E+21   3.968E+29   6.172E+28   2.472E+18
8.683E+25   25360000    1.190E+34   2.845E+21   1.896E+20   2.125E+28   3.306E+27   1.324E+17
1.024E+26   24620000    1.705E+34   4.075E+21   2.717E+20   3.045E+28   4.736E+27   1.897E+17
1.311E+22   1186000     5.801E+27   1.387E+15   9.244E+13   1.036E+22   1.611E+21   6.455E+10
1.989E+30   696300000   2.274E+41   5.436E+28   3.624E+27   4.062E+35   6.318E+34   2.531E+24
7.350E+22   1737000     1.245E+29   2.976E+16   1.984E+15   2.223E+23   3.458E+22   1.385E+12

에서 영감을 윙키와 함께 죽음의 별 전원 켜기 스콧 맨리으로합니다.


"기본은 줄"이란 무엇입니까? 출력 장치가 항상 입력 장치에 제공되는 것은 아닙니다.
HyperNeutrino

8
또한, 나는 어떤 것을 완전히 멸절시키는 데 필요한 에너지의 양에 대한 이름이 실제로 얼마나 좋은지를 좋아합니다. : P
HyperNeutrino

6 개의 입력 중 하나로 출력 장치를 사용할 수 있습니까? 그렇지 않으면 번거로운 I / O 형식이며 권장하지 않습니다
HyperNeutrino

@HyperNeutrino는 확실하지만 여전히 출력의 속기가 필요합니다.
Nissa

2
@StephenLeppik " 사용할 단위를 나타내는 6 개의 고유 한 입력 중 하나 "-고유 한 입력은 4.184, 62.76 등일 수 있습니까?
ngn

답변:


6

05AB1E , 56 54 바이트

다음과 같이 입력을받습니다. unit, radius, mass

6n56•G*•x619+•Oć•4°z)•1¡‡•S°*"Wwigu"I1èkè*2498T>°P/*¹J

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

outgolfer Erik (베이스 255 인코딩 41846276) 덕분에 2 바이트 가 절약되었습니다 .


16

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

입력을 3 개의 개별 변수로 사용 (mass, radius, unit)합니다.

(m,r,u)=>m*m/r/[8987e9,56,6276e6,,4184e5,1e-4,360][parseInt(u,30)%7]/2498e11+u

테스트 사례

다음 스 니펫은 제공된 스프레드 시트에서 모든 테스트 사례를 실행합니다.

어떻게?

이것은 @ColeraSu의 C answer 와 매우 유사 하며 전체 단위 문자열에서 작동하는 JS 친화적 해시 함수가 있습니다.

Unit       | Parsed as (*) | Base-30 -> Dec. | mod 7
-----------+---------------+-----------------+------
"J"        | "j"           | 19              | 5        (*):
"kilotons" | "kilotons"    | 451052545318    | 4          Because we're parsing as Base-30,
"nukes"    | "n"           | 23              | 2          characters [u-z] (and anything
"twinkies" | "t"           | 29              | 1          after them) are simply ignored.
"kWh"      | "k"           | 20              | 6
"kg"       | "kg"          | 616             | 0

7

젤리 , 78 바이트

²×⁽LÐ÷ȷ14÷⁴÷5÷⁵ị“¤Fðẏẏż“?A⁺ẏẏż“¬ŀż“8Ƙż“¡uþ³⁾ẉṿÆ“¡’¤;⁵ị“ÞṠlT“¡ṁæ-“;ØḲ“ȧ¹“ṫD“}»¤

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

줄과 관련된 것은 실제로 젤리의 도전 유형이 아닙니다 ...

user202729 덕분에 -7 바이트 (JavaScript에 맞지 않도록 도와 주셔서 감사합니다 : D)


그래, 지금 당신은 JS와 묶여 있고 여전히 위에 있지 않습니다.
Nissa

@StephenLeppik 적어도 나는 구타를 당하지 않았다 : D와 shush 05AB1E는 본질적으로 문자열 도전에서 더 낫다 : P
HyperNeutrino

6

C, 113 바이트

의 후행 '\0'을 사용하여 두 번째 문자를 해시하십시오 "J". C의 인라인 배열이 사용됩니다.

M마지막 두 번째를 곱해야 합니다 inf. 그렇지 않으면 오버플로됩니다 .

f(m,r,c)float m,r;char*c;{printf("%e%s",m/r/(float[]){1e-4,360,6276e6,8987e9,56,4184e5}[c[1]%36%7]/2498e11*m,c);}

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


+1. 가능한 경우 확실하지 않지만 f (m, r, char * c) float m, r {…}은 일부 바이트를 절약합니다. 또한 printf 이후의 세미콜론은 선택 사항입니다.
xanoetux

@xanoetux 어떤 컴파일러를 사용하십니까? 그래도 둘 다 내 컴퓨터에서 작동하지 않습니다.
Colera Su

GCC를 사용하고 있습니다. 테스트되지 않았지만 마지막 세미콜론에 대해 확신합니다. (나중에 테스트 할 것임)
xanoetux

4

APL (Dyalog Unicode) , 153 71 69 바이트

op←{⍺,⍨40032E¯15÷÷/8987E13 36E5 6276E10 56E4 4184E9 1['gWuw '⍳⊃1↓⍺]⍵⍺⍺⍵}

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

이 답변에 내 대답을 완전히 for 아주 신 @ Adám에게 감사드립니다. 2 바이트 동안 @ngn에게 감사합니다.

이 '함수'는 실제로라는 연산자 op입니다. 측정 단위의 모든 값은 과학적 표기법으로 변환되었습니다.

작동 방식 :

{⍺,⍨40032E¯15÷÷/8987E13 36E5 6276E10 56E4 4184E9 1['gWuw '⍳⊃1↓⍺]⍵⍺⍺⍵}
                                                             1↓⍺          take the measurement unit without the first letter (because it is ambiguous)
                                                                         picks the first element returned by 
                                                                         Dyadic ota, which finds the index of
                                                  'gWuw '                 each of these characters
                                                 [             ]          square brackets indicate the index
               8987E13 36E5 6276E10 56E4 4184E9 1                         of the element of this vector (1-indexed) which will be used as the divisor for
            ÷/                                                  ⍵⍺⍺⍵      dividing by the left operand (⍺⍺) and the right argument squared.
    40032E¯15÷                                                            then divide this number by the result
 ⍺,⍨                                                                      and append the measurement unit

3

파이썬 3 112 106 108 101 바이트

lambda m,r,u:str(40032e-19*m*m/r/{'':1e-4,'i':4184e5,'u':6276e6,'w':56,'W':360,'g':8987e9}[u[1:2]])+u

꽤 직설적 인. 파이썬 e표기법을 사용합니다 . 두 번째 문자를 기준으로 단위를 구별하고 해당 값으로 나누는 dict을 사용합니다. u[1:2]은 기본적으로 오류 대신 u[1]반환 ''됩니다 (지금 만 배웠습니다). 그런 다음 몇 가지 단순화로 수식을 적용하십시오.

편집 : 완전히 인간적 덕분에 106까지, 새로운 핵 가치로 인해 108로, Colera Su 덕분에 101까지.

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


3

엑셀 (오피스 365), 106 (101) 97 바이트

A1이 질량, A2반지름 및 B1단위 라고 가정하면 출력의 속기로 작성됩니다.

=40032E-19*A1^2/(A2*SWITCH(MID(B1,2,1),"u",6276E6,"w",56,"W",360,"g",89876E8,"i",4184E5,1E-4))&B1

Excel, 130 바이트

구식 Excel에는 SWITCH기능이 없으므로

=40032E-15*A1^2/(A2*IF(B1="J",1,IF(B1="nukes",6276E10,IF(B1="twinkies",56E4,IF(B1="kWh",36E5,IF(B1="kg",299792E3^2,4184E9))))))&B1

(질문 요구 사항에 대해서는 여전히 정확한 값) 으로 대체 299792E3^2하여 2 바이트를 절약 할 수 있습니다 89876E12. 모든 값을 1000다른 값으로 =40032E-19*A1^2/(A2*SWITCH(MID(B1,2,1),"u",6276E6,"w",56,"W",360,"g",89876E8,"i",4184E5,1E-4))&B1
나눕니다

Switch()기능 은 Excel의 데스크톱 사본에서 사용할 수 있으며 Office 2016에 도입되었습니다.
Taylor Scott

1

루비, 83 82 바이트

->m,r,u{"#{40032E-18*m*m/r/[36E2,56,8987E9,1E-3,4184E6,6276E7][u.sum*3%71%6]} "+u}

단위 ( i * k mod m공식)에 대한 LUT를 색인화하기 위해 사용자 정의 해시를 사용합니다 . 숫자는 무차별 대입법을 사용하여 발견되었습니다.


0

엑셀, 94 바이트

에서 질량 A1, 반지름에서 B1단위를 가져옵니다 C1. 에서 찾아보십시오 2*Code(Unit) + Length(Unit) modulo 11.

=4.0032E-15*A1^2/B1/CHOOSE(MOD(2*CODE(C1)+LEN(C1),11),,4184E5,,,6276E6,1E-4,89876E8,360,56)

0

젤리 , 59 바이트

방금 단위를 변환하는 또 다른 이상한 방법을 시도하고 싶었습니다. 그러나 나머지 코드는 아마도 골치 아픈 것으로 보입니다.

⁵OÆPḄ%9ị[56,4184ȷ5,8987ȷ9,360,0,6276ȷ6,1ȷ-4]
²÷⁴÷2498ȷ11÷¢⁵

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

어떻게?

ASCII 코드의 우선 순위에서 단위 문자열의 '서명'을 작성합니다. 이 값을 이진 값으로 해석하고 조회 테이블에서 최종 인덱스를 얻기 위해 모듈로를 적용합니다.

⁵OÆPḄ%9ị[...]    - helper link to convert the unit to a hardcoded constant
⁵                - the 3rd input        e.g. "kilotons"
 O               - to ASCII codes       --> [107, 105, 108, 111, 116, 111, 110, 115]
  ÆP             - is prime?            --> [1, 0, 0, 0, 0, 0, 0, 0]
    Ḅ            - binary -> decimal    --> 128
     %9          - modulo 9             --> 2
       ị[...]    - get value from table --> 418400000

²÷⁴÷2498ȷ11÷¢⁵   - main link taking the mass, the radius and the unit
²                - square the mass
 ÷⁴              - divide by the radius
   ÷2498ȷ11      - divide by 2498e11
           ÷¢    - divide by the unit constant, invoking the helper link as a nilad
             ⁵   - append the unit

도우미 링크는 각 장치에 대해 다음과 같은 인덱스를 제공합니다.

unit     | ASCII codes                     | is prime?       | bin -> dec | mod 9
---------+---------------------------------+-----------------+------------+------
J        | 74                              | 0               |      0     |   0
kilotons | 107,105,108,111,116,111,110,115 | 1,0,0,0,0,0,0,0 |    128     |   2
nukes    | 110,117,107,101,115             | 0,0,1,1,0       |      6     |   6
twinkies | 116,119,105,110,107,105,101,115 | 0,0,0,0,1,0,1,0 |     10     |   1
kWh      | 107,87,104                      | 1,0,0           |      4     |   4
kg       | 107,103                         | 1,1             |      3     |   3
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.