8 개의 호주 주와 테리토리가 있으며 각각 2 자 또는 3 자의 약어가 있습니다 :
- 행동 : 호주 수도권
- NSW : 뉴 사우스 웨일즈
- NT : 노던 테리토리
- QLD : 퀸즐랜드
- SA : 남호주
- TAS : 태즈 매니아
- VIC : 빅토리아
- WA : 서호주
귀하의 임무는 대문자로 유효한 호주 약어를 사용하고 올바른 전체 이름을 반환하는 함수 / 프로그램을 작성하는 것입니다 (위와 같이 대소 문자 구분).
해당 언어의 모든 프로그램에서 피할 수없는 부작용 인 단일 후행 줄 바꿈 이외의 추가 공백은 허용되지 않습니다.
예를 들면 다음과 같습니다.
f("TAS") => "Tasmania"
표준 코드 골프 규칙 (바이트 단위의 가장 짧은 코드가 승리합니다!) 및 허점이 적용됩니다.
답변
망막 , 135121 바이트
@Neil 덕분에 영리한 공간 삽입 전술을 사용하여 13 바이트의 골프를 쳤다.
AS
asmania
^W
Western
NT
NorthernT
T$
Territory
A
Australia
aC
an Capital
IC
ictoria
LD
ueensland
SW
ew SWales
S
South
네 번째 줄과 마지막 줄의 후행 공백에 유의하십시오.
답변
젤리 , 56 바이트
OS%15ị“ÞÑṿ“ıÐṁṾṗ“¡ʋẹḢ⁾ḅ“¢T¡ż¶““msẒw²ẉṪP“ØÑĊ“©$Ḅ3ẊḳƓ“ÇH°»
문자 목록을 가져오고 리턴하는 모나드 링크.
참고 : “호주”및 “지역”이라는 단어를 재사용해도 바이트 수를 줄이는 데 도움이되지 않습니다.
어떻게?
8 개의 상태 약어 모듈로 15의 서수의 합을 취하면 8 개의 고유 한 값이 제공됩니다. 이러한 모듈로 9의 결과를 가져와 독창성을 유지합니다.
OS%15ị“ ... » - Main link: list of characters a
O - cast to ordinals
S - sum
%15 - modulo 15
“ ... » - list of compressed strings:
- "Victoria"
- "Western Australia"
- "Northern Territory"
- "South Australia"
- ""
- "Australian Capital Territory"
- "Tasmania"
- "New South Wales"
- "Queensland"
ị - index into (1-indexed and modular - hence the single empty entry)
답변
하스켈, 193192 바이트
f"NSW"="New South Wales"
f"QLD"="Queensland"
f"ACT"=a++"n Capital"++t
f"VIC"="Victoria"
f"TAS"="Tasmania"
f"SA"="South "++a
f"NT"="Northern"++t
f"WA"="Western "++a
a="Australia"
t=" Territory"
다소 순진한 해결책이지만 첫 번째로 상당히 간단한 도전을 원했습니다. Haskell에서 더 나은지 확실하지 않습니다.
공백을 t로 이동하여 바이트를 저장했습니다.
답변
Mathematica, 177 바이트
명백한 해결책 : (199 바이트)
<|"ACT"->"Australian Capital Territory","NSW"->"New South Wales","NT"->"Northern Territory","QLD"->"Queensland","SA"->"South Australia","TAS"->"Tasmania","VIC"->"Victoria","WA"->"Western Australia"|>
개선 된 솔루션 : (182 바이트, Wolfram Mathematica 10.2 컴퓨터에서만 실행 가능)
{,"Northern Territory","Queensland",,,,,"Australian Capital Territory","New South Wales",,,"Tasmania",,,"Western Australia","Victoria",,,,,,,,,,,,"South Australia"}[[Hash@#~Mod~29]]&
최고의 솔루션 :
{,"Northern Territory","Queensland",a="Australia",,,,a<>"n Capital Territory","New South Wales",,,"Tasmania",,,"Western "<>a,"Victoria",,,,,,,,,,,,"South "<>a}[[Hash@#~Mod~29]]&
불행히도 반복 " Territory"
은 0 바이트 만 저장할 수 있습니다.
Mathematica의 기본 해시 기능이 버전을 변경 한 것으로 보입니다. 그러나 메소드를 추가하면 코드가 더 길어집니다. Mathematica 샌드 박스의 기본 해시 기능을 사용하면 코드를 약 9 바이트 더 짧게 만들 수 있습니다.
Mathematica (샌드 박스-현재-버전 11), 168 바이트
{a="Australia","Western "<>a,,,,"South "<>a,,a<>"n Capital Territory",,,,"Tasmania","Northern Territory",,,,"New South Wales","Victoria","Queensland"}[[Hash@#~Mod~20]]&
답변
파이썬, 181 바이트
@Jonathan Allan 덕분에 1 바이트 절약
lambda a,s='Australia',t=' Territory':[s+'n Capital'+t,'New South Wales','Northern'+t,'Queensland','South '+s,'Tasmania','Victoria','Western '+s]['ACNSNTQLSATAVIWA'.index(a[:2])//2]
답변
SED, 167 157 바이트
s/T$/ Territory/
s/N /Northern /
s/AS/asmania/
s/IC/ictoria/
s/LD/ueensland/
s/W$/Wales/
s/A/Australia/
s/C/n Capital/
s/NS/New S/
s/^W/Western /
s/S/South /
답변
PHP, 148143 바이트
<?=strtr(["0n Capital 3",Victoria,Queensland,West20,10,Tasmania,North23,"New 1 Wales"][md5(hj.$argn)%8],[Australia,"South ","ern ",Territory]);
Jörg Hülsermann 덕분에 5 바이트를 절약했습니다 .