태양계에서 가장 큰 20 개의 물체 중 하나의 이름이 주어집니다. 당신의 임무는 반경의 근사치를 킬로미터 단위로 반환하는 것입니다.
이것은 점수 가 당신의 최악의 근사값을 기준으로 페널티 비율 곱한 코드 길이 (바이트)로 구성되는 코드 도전 입니다. 따라서 최저 점수가 이깁니다 .
≥1
“우리가 우주를 여행 할 때”는 검은 안식일에 의한 플래닛 캐러밴 의 마지막 줄이며 , 나중에 판테라에 의해 덮힌 다 .
태양계 물체
출처 : Wikipedia
주의 : 순위는 정보 제공만을위한 것입니다. 입력은 객체 의 이름 입니다.
n | Object | Radius (km)
----+----------+-------------
1 | Sun | 696342
2 | Jupiter | 69911
3 | Saturn | 58232
4 | Uranus | 25362
5 | Neptune | 24622
6 | Earth | 6371
7 | Venus | 6052
8 | Mars | 3390
9 | Ganymede | 2634
10 | Titan | 2575
11 | Mercury | 2440
12 | Callisto | 2410
13 | Io | 1822
14 | Moon | 1737
15 | Europa | 1561
16 | Triton | 1353
17 | Pluto | 1186
18 | Eris | 1163
19 | Haumea | 816
20 | Titania | 788
또는 복사하여 붙여 넣기하기 쉬운 목록으로 :
'Sun', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Earth', 'Venus', 'Mars', 'Ganymede', 'Titan', 'Mercury', 'Callisto', 'Io', 'Moon', 'Europa', 'Triton', 'Pluto', 'Eris', 'Haumea', 'Titania'
696342, 69911, 58232, 25362, 24622, 6371, 6052, 3390, 2634, 2575, 2440, 2410, 1822, 1737, 1561, 1353, 1186, 1163, 816, 788
너의 점수
하자 의 예상 반경 수 개체 및하자 이 객체에 대한 프로그램의 해답이 될 수.
Rnnth
An
그런 다음 점수는 다음과 같이 정의됩니다.
여기서 은 코드 길이 (바이트)입니다.
L예:
코드의 크기가 바이트이고 최악의 근사치가 대신 의 추정 반경으로 달에있는 경우 점수는 다음과 같습니다.
1001000
1737
낮을수록 좋습니다.
답변을위한 권장 헤더 :
Language, 100 bytes, score = 302
당신이 사용할 수있는 이 스크립트를 (일에서 티타니아에 첫 번째 줄 = 코드 길이, 향후 20 개 라인 = 당신의 출력) 점수를 계산합니다.
규칙
- 소문자, 전체 대문자 또는 위에서 설명한대로 정확히 제목 (제목)으로 개체 이름을 사용할 수 있습니다. 다른 혼합 사례는 허용되지 않습니다.
- 입력은 20 개의 가능한 이름 중 하나가 보장됩니다.
- 정수 또는 부동 소수점을 반환 할 수 있습니다. 두 경우 모두 패널티는 이러한 값을 사용하여 직접 계산해야합니다 (부동의 경우 반올림 값이 아님).
- 양수 값을 반환해야합니다.
- 빈 프로그램은 허용되지 않습니다.
답변
PowerShell , 3 바이트, 3637 점
2e4
매우 순진하고 지루한 구현; 20000
입력에 관계없이 반환합니다 . 태양을 특수하게 배치하거나 2
모두 대신 부동 소수점 값을 사용하는 것과 같은 실험을 수행 하면 코드 길이가 크기 비교 이득을 상쇄하기에 충분하게 증가했기 때문에 점수가 떨어졌습니다.
답변
젤리 , 34 바이트, 점수 = 37
OḌ“⁸|5/!‘%ƒị“RNFLOJMjs⁽\u[USJ‘1.1*
입력은 대문자이며 출력은 최소 1.1의 거듭 제곱입니다.
작동 원리
OḌ“⁸|5/!‘%ƒị“RNFLOJMjs⁽\u[USJ‘1.1* Main link. Argument: s (string)
O Ordinal; map the char in s to their code points.
"ERIS" -> [69,82,73,83]
Ḍ Undecimal; treat the result as an array of digits
in base 10 and convert it to integer.
[69,82,73,83] -> 69000+8200+730+83 = 78013
“⁸|5/!‘ Literal; yield [136, 124, 53, 47, 33].
%ƒ Fold the array by modulus, using the computed
integer as initial value.
78013 -> 78013%136%124%53%47%33 = 32
“RNFLOJMjs⁽\u[USJ‘ Literal; yield [82, 78, 70, 76, 79, 74, 77, ...
106, 115, 141, 92, 117, 91, 85, 83, 74].
ị Retrieve the element from the array to the right,
at the index to the left.
Indexing is 1-based and modular.
32 = 16 (mod 16) -> 'J' = 74
1.1* Raise 1.1 to the computed power.
74 = 1.1**74 = 1156.268519450066
답변
Java (JDK) , 90 바이트, 점수 = 97
s->("ýCĄ (ᬺ!˂Fɍ".charAt(s.substring(2).chars().sum()%96%49%25)-7)*100
- 이 항목은 표시 할 수없고 멀티 바이트 유니 코드 문자를 모두 사용합니다 (그러나 Java는이를 허용합니다). 정확한 코드는 TIO를 확인하십시오.
- 입력은 제목 케이스 여야합니다.
- 이 코드는 인코딩 할 때 마지막 두 자리를 건너 뛸 수 있고 값을 100으로 곱하여 근사 할 수 있도록 값을 최고 100의 배수 (때로는 위, 때로는 아래로)로 반올림합니다.
- 이 항목은 다양한 해시를 사용하여 25 코드 포인트 문자열 (찾을 수있는 가장 짧은 문자열)에 맞습니다.
크레딧
- Kevin Cruijssen 덕분에 반지름 (100으로 나눈 값)을
String
명시적인int
배열 로 하드 코딩 하는 대신 직접 인코딩하여 -48 점 (-45 바이트) .
답변
Wolfram Language 114103 97 88 86 82 바이트. 점수 = 114103 97 89 87 83 점
(#&@@EntityValue[Interpreter["AstronomicalObject"]@#,"Radius"]/._String->507)1.61&
덕분에 6 점 이상 Dennis
, 덕택에 6 점 이상, 6 점 lirtosiast
이상이 추가되었습니다 user202729
.
Mathematica는 태양계 데이터 (많은 추가 천문학적 데이터)를 가져올 수 있지만, 아래 설명과 같이 약간의 조정이 필요합니다.
Interpreter[#,"AstronomicalObject"]&
로 표시되는 용어와 관련된 엔터티 (즉, 컴퓨터 계산 가능 개체)를 반환합니다 #
.
EntityValue[AstronomicalObject[],"Radius"]
엔터티의 반경 (마일)을 반환합니다. “Haumea”의 경우 816.27 (즉 507 * 1.61) 값이 반환됩니다.
반경 1.61
을 마일로 곱하면 마일에서 킬로미터로 변환됩니다. 가장 극단적 인 경우에도 정수가 아닌 10 진수 값이 1 % 미만의 오류를 차지합니다.
[[1]]
단위없이 km를 반환합니다. 이것은 나중에로 변경되어 #&@@
동일한 결과를 얻었습니다.
답변
파이썬 3 , 점수 95, 95 바이트
lambda n:ord("ؙҢ?ਏ?ാᣣ४ঈ挒ឤ?̰ҋ??ۉՉ怮ܞ̔"[int(n,35)%87%52%24-1])
파이썬 3 , 점수 133, 133 바이트
lambda n:int(f'00e0{10**18+10**6}10x1h2411j4?00??811i1207wazxmwuvko?mw??xc1ze1ldyujz6zysi4?ob??k9lym6w'[int(n,35)%87%52%24-1::23],36)
답변
파워 쉘은 150 141 바이트, 골 (163) (153)
($args|% t*y|?{'Su6963J699S582U253N246Ea63V60Ma33G26Ti25Me24C24I18M17Eu15T13P12E12H8Titani8'-cmatch"$(($y+=$_))(\d+)"}|%{100*$Matches.1})[-1]
테스트 스크립트 :
$f = {
($args|% t*y|?{'Su6963J699S582U253N246Ea63V60Ma33G26Ti25Me24C24I18M17Eu15T13P12E12H8Titani8'-cmatch"$(($y+=$_))(\d+)"}|%{100*$Matches.1})[-1]
}
$penalty = @(
,("Sun" , 696342)
,("Jupiter" , 69911)
,("Saturn" , 58232)
,("Uranus" , 25362)
,("Neptune" , 24622)
,("Earth" , 6371)
,("Venus" , 6052)
,("Mars" , 3390)
,("Ganymede" , 2634)
,("Titan" , 2575)
,("Mercury" , 2440)
,("Callisto" , 2410)
,("Io" , 1822)
,("Moon" , 1737)
,("Europa" , 1561)
,("Triton" , 1353)
,("Pluto" , 1186)
,("Eris" , 1163)
,("Haumea" , 816)
,("Titania" , 788)
) | % {
$s,$expected = $_
$result = &$f $s
$ratio = [Math]::Max($result/$expected, $expected/$result)
$ratio*$ratio
}
$scriptLength = $f.ToString().Length - 2 # -4 if CRLF mode
$penaltyMax = ($penalty|Measure-Object -Maximum).Maximum
$score = $scriptLength * $penaltyMax
"$score = $scriptLength * $penaltyMax"
산출:
152.731283431953 = 141 * 1.08320059171598
설명:
- 이름에는 문자 만 포함되며 반지름에는 숫자와 점이 포함됩니다. 따라서 모든 데이터를 데이터 문자열로 작성하고 정규식 검색을 수행 할 수 있습니다.
- 스크립트는 왼쪽에서 오른쪽으로 모든 하위 문자열을 검색하고 마지막으로 찾은 결과를 가져옵니다.
- 데이터 문자열을 줄이려면 입력이 제목 대소 문자 여야합니다.
- 는
end of line mode
단지 LF입니다.
예:
Titania Triton Titan
-------------- ------------- -------------
T -> 1.3 T -> 1.3 T -> 1.3
Ti -> 2.5 Tr -> Ti -> 2.5
Tit -> Tri -> Tit ->
Tita -> Trit -> Tita ->
Titan -> Triton -> Titan ->
Titani -> .8
Titania ->
Result is .8 Result is 1.3 Result is 2.5
Powershell, 178 바이트, 178 점
($args|% t*y|?{'Su696342J69911S58232U25362N24622Ea6371V6052Ma3390G2634Ti2575Me2440C2410I1822M1737Eu1561T1353P1186E1163H816Titani788'-cmatch"$(($y+=$_))(\d+)"}|%{+$Matches.1})[-1]
답변
05AB1E , 점수 100 66 60 ( 100 61 56 바이트 )
•1∞²îc|I‰∍T‡sÇ3¡ò½в…»Ë•§•1ë£ñƒq£û¿’…•S£y¦¦ÇO96%49%25%èт*
@ OlivierGrégoire 의 Java 답변 포트 이므로이 첫 번째 답변이 마음에 드시면 그를 찬성 해야합니다!
제목 케이스에 입력하십시오.
05AB1E , 점수 100 (100 바이트 )
•*Òâ%ÌÜS…Ùb‹Úi{e!]ɸ·vÌBUSηHã£āðxyµŠ•§•3«8¹ØмS7Ç•S£.•WùηƵ@,Sº,ûεβʒóÃX\¹Θäáá’Ý)”Ωož∞-z.A±D•3ôI2£Iθ«kè
전체 소문자로 입력하십시오. 정확한 반경을 출력하므로 페널티가 추가되지 않습니다.
설명:
•*Òâ%ÌÜS…Ùb‹Úi{e!]ɸ·vÌBUSηHã£āðxyµŠ•
# Compressed integer 696342699115823225362246226371605233902634257524402410182217371561135311861163816788
§ # Casted to string (bug, should have been implicitly..)
•3«8¹ØмS7Ç• # Compressed integer 65555444444444444433
S # Converted to a list of digits: [6,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3]
£ # The first integer is split into parts of that size: ["696342","69911","58232","25362","24622","6371","6052","3390","2634","2575","2440","2410","1822","1737","1561","1353","1186","1163","816","788"]
.•WùηƵ@,Sº,ûεβʒóÃX\¹Θäáá’Ý)”Ωož∞-z.A±D•
# Compressed string "sunjursanursneeeahvesmasgaetinmeycaoioomoneuatrnploershaatia"
3ô # Split into parts of size 3: ["sun","jur","san","urs","nee","eah","ves","mas","gae","tin","mey","cao","ioo","mon","eua","trn","plo","ers","haa","tia"]
I2£ # The first two characters of the input
Iθ # The last character of the input
« # Merged together
k # Get the index of this string in the list of strings
è # And use that index to index into the list of integers
# (and output the result implicitly)
내이 05AB1E 팁을 참조하십시오 (섹션에서는 어떻게 큰 정수를 압축하는 데 어떻게? 와 어떻게 문자열을 사전의 일부를 압축? ) 방법 압축 사용 작품을 이해하기.
나는 태양을 매핑하는 70 바이트 대안을 만들었습니다 600,000
. [목성, 토성] ~ 60,000
; [우라누스, 해왕성]에서 30,000
; [지구, 금성] ~ 6,000
; [mars, ganymede, 티탄, 수은, callisto] ~ 3,000
; [io, moon, europa, triton, pluto, eris] ~ 1,500
; 및 [haumea; titania] ~ 750
. 불행히도 그것은 117 점을 얻었습니다. 나중에 다른 방법으로 100 이하로 갈 수 있는지 알 수 있습니다.