Mở rộng nhà nước Úc


9

Có 8 tiểu bang và vùng lãnh thổ của Úc, mỗi tiểu bang có một chữ viết tắt 2 hoặc 3 chữ cái:

  • ACT: Lãnh thổ thủ đô Úc
  • NSW: New South Wales
  • NT: Lãnh thổ phía Bắc
  • QLD: Queensland
  • SA: Nam Úc
  • TAS: Tasmania
  • VIC: Victoria
  • WA: Tây Úc

Nhiệm vụ của bạn là viết một hàm / chương trình có chữ viết tắt của tiểu bang Úc hợp lệ bằng chữ in hoa và trả về tên đầy đủ chính xác (phân biệt chữ hoa chữ thường như trên).

Không có khoảng trắng bổ sung nào được phép, ngoại trừ một dòng mới duy nhất trong đó đây là tác dụng phụ không thể tránh khỏi của mọi chương trình trong ngôn ngữ đó.

Ví dụ:

f("TAS") => "Tasmania"

Các quy tắc tiêu chuẩn (mã ngắn nhất tính bằng byte thắng!) Và áp dụng sơ hở.


6
Tôi nghĩ rằng chúng ta cần tạo thẻ [ viết tắt nhà nước ] tại thời điểm này.
Cyoce

Thế còn "New South (Far) Wales" thì sao? (Đối với những người không nhận ra, đó là "NSFW")
NoOneIsHere

3
Trong khi tôi đang chơi xung quanh với một giải pháp, thì NSW đã mở rộng thành "New South Western ales" mà tôi khá thích :)
Steve Bennett

Kỳ dị. Tôi đã tạo thẻ và thêm nó, nhưng ai đó đã xóa nó một lần nữa.
Steve Bennett

viết tắt nhà nước có thể là quá cụ thể. có thể làm cho thẻ một cái gì đó về chữ viết tắt / từ viết tắt?
Sparr

Câu trả lời:


9

Võng mạc , 135 121 byte

13 byte được chơi golf nhờ @Neil bằng cách sử dụng các chiến thuật chèn không gian thông minh, điều này đã truyền cảm hứng cho thêm một byte được chơi gôn

AS
asmania
^W
Western 
NT
NorthernT
T$
 Territory
A
Australia
aC
an Capital
IC
ictoria
LD
ueensland
SW
ew SWales
S
South 

Hãy thử trực tuyến!

Lưu ý các dấu cách ở dòng thứ tư và dòng cuối cùng.


Nếu bạn thay thế ASbằng asmaniatrước, thì bạn có thể thay thế tất cả các As còn lại bằng Australia.
Neil

Bạn cũng có thể sáng tạo với tính năng chèn không gian của mình, đại loại như thế này: Hãy thử trực tuyến!
Neil

(Nhưng vì điều đó, \B[A-Z]sẽ giúp bạn tiết kiệm được hai byte.)
Neil

@Neil Cảm ơn các mẹo, tôi đã sử dụng các đề xuất của bạn để chơi thêm một byte.
dùng41805

5

Thạch , 56 byte

OS%15ị“ÞÑṿ“ıÐṁṾṗ“¡ʋẹḢ⁾ḅ“¢T¡ż¶““msẒw²ẉṪP“ØÑĊ“©$Ḅ3ẊḳƓ“ÇH°»

Một liên kết đơn và lấy danh sách các ký tự.

Xem tất cả các trường hợp tại Dùng thử trực tuyến!

Lưu ý: Sử dụng lại các từ "Úc" và "Lãnh thổ" không giúp giảm số lượng byte.

Làm sao?

Lấy tổng số thứ tự của tám chữ viết tắt trạng thái modulo 15 cho 8 giá trị duy nhất. Lấy kết quả của những modulo 9 duy trì tính duy nhất.

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)

Đáng buồn là việc tái sử dụng Úc và Lãnh thổ không giúp ích gì: /
Steve Bennett

5

Haskell, 193 192 byte

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"

Một số giải pháp ngây thơ, nhưng tôi muốn đi cho một challange khá đơn giản cho lần đầu tiên của tôi. Tôi thậm chí không chắc là có thể tốt hơn trong Haskell hay không.

Đã lưu một byte bằng cách di chuyển không gian vào t


1
Chào mừng đến với PPCG!
L3viathan

3

Toán học, 177 byte

Giải pháp rõ ràng: (199 byte)

<|"ACT"->"Australian Capital Territory","NSW"->"New South Wales","NT"->"Northern Territory","QLD"->"Queensland","SA"->"South Australia","TAS"->"Tasmania","VIC"->"Victoria","WA"->"Western Australia"|>

Giải pháp cải tiến: (182 byte, chỉ có thể chạy trên máy tính Wolfram Mathematica 10.2 của tôi)

{,"Northern Territory","Queensland",,,,,"Australian Capital Territory","New South Wales",,,"Tasmania",,,"Western Australia","Victoria",,,,,,,,,,,,"South Australia"}[[Hash@#~Mod~29]]&

Giải pháp tốt nhất:

{,"Northern Territory","Queensland",a="Australia",,,,a<>"n Capital Territory","New South Wales",,,"Tasmania",,,"Western "<>a,"Victoria",,,,,,,,,,,,"South "<>a}[[Hash@#~Mod~29]]&

Thật không may lặp lại chỉ " Territory"có thể lưu 0 byte.

Có vẻ như chức năng Hash mặc định của Mathematica thay đổi so với các phiên bản. Nhưng thêm một phương thức sẽ làm cho mã dài hơn. Bây giờ sử dụng hàm Hash mặc định của hộp cát Mathicala có thể làm cho mã ngắn hơn khoảng 9 byte.

Mathicala (hộp cát - hiện tại - phiên bản 11), 168 byte

{a="Australia","Western "<>a,,,,"South "<>a,,a<>"n Capital Territory",,,,"Tasmania","Northern Territory",,,,"New South Wales","Victoria","Queensland"}[[Hash@#~Mod~20]]&

Chết tiệt, chỉ có 21 byte tốt hơn câu trả lời tầm thường.
Steve Bennett

5
Đợi đã, vậy Mathicala không có nội dung nào cho việc này?
Neil

@Neil tôi nên nghĩ về điều đó trước.
dùng202729

2

Python, 181 byte

Lưu 1 byte nhờ @Jonathan Allan

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]

Hãy thử trực tuyến!


t=' Territory'Tôi nên tiết kiệm một byte tôi nghĩ.
Jonathan Allan

2

Sed, 167 157 byte

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 /

Tôi đã trì hoãn ban đầu ern , nhưng chi phí nhiều hơn nó chỉ tiết kiệm cho hai lần sử dụng.
Toby Speight

1

PHP, 148 143 byte

<?=strtr(["0n Capital 3",Victoria,Queensland,West20,10,Tasmania,North23,"New 1 Wales"][md5(hj.$argn)%8],[Australia,"South ","ern ",Territory]);

Đã lưu 5 byte nhờ Jörg Hülsermann .


0

C # , 289 byte


Dữ liệu

  • Đầu vào String s Chữ viết tắt của nhà nước.
  • Đầu ra String Tên trạng thái mở rộng

Chơi gôn

(string s)=>{return new System.Collections.Generic.Dictionary<string,string>(){{"ACT","Australian Capital Territory"},{"NSW","New South Wales"},{"NT","Northern Territory"},{"QLD","Queensland"},{"SA","South Australia"},{"TAS","Tasmania"},{"VIC","Victoria"},{"WA","Western Australia"}}[s];};

Ung dung

( string s ) => {
    return new System.Collections.Generic.Dictionary<string, string>() {
        { "ACT", "Australian Capital Territory" },
        { "NSW", "New South Wales" },
        { "QLD", "Queensland" },
        { "TAS", "Tasmania" },
        { "VIC", "Victoria" },
        { "NT", "Northern Territory" },
        { "SA", "South Australia" },
        { "WA", "Western Australia" }
    }[ s ];
};

Ungolfed có thể đọc được

// Takes a state name abbreviated 
( string s ) => {

    // Creates a dictionary with the state name abbreviated and the full state name and returns the one that match
    return new System.Collections.Generic.Dictionary<string, string>() {
        { "ACT", "Australian Capital Territory" },
        { "NSW", "New South Wales" },
        { "QLD", "Queensland" },
        { "TAS", "Tasmania" },
        { "VIC", "Victoria" },
        { "NT", "Northern Territory" },
        { "SA", "South Australia" },
        { "WA", "Western Australia" }
    }[ s ];
};

Mã đầy đủ

using System;
using System.Collections.Generic;

namespace Namespace {
   class Program {
      static void Main( String[] args ) {
         Func<String, String> f = ( string s ) => {
             return new System.Collections.Generic.Dictionary<string, string>() {
                 { "ACT", "Australian Capital Territory" },
                 { "NSW", "New South Wales" },
                 { "QLD", "Queensland" },
                 { "TAS", "Tasmania" },
                 { "VIC", "Victoria" },
                 { "NT", "Northern Territory" },
                 { "SA", "South Australia" },
                 { "WA", "Western Australia" }
             }[ s ];
         };

         List<String>
             testCases = new List<String>() {
                 "ACT",
                 "NSW",
                 "QLD",
                 "TAS",
                 "VIC",
                 "NT",
                 "SA",
                 "WA",
             };

         foreach( String testCase in testCases ) {
             Console.WriteLine( $"Input: {testCase}\nOutput: {f( testCase )}\n");
         }

         Console.ReadLine();
      }
   }
}

Phát hành

  • v1.0 - 289 bytes- Giải pháp ban đầu.

Ghi chú

  • không ai

(string s)chỉ có thể là s, Bạn có thể sử dụng trả về ngầm: s=>new System....và bạn có thể xóa dấu chấm phẩy.
TheLethalCoder


0

JavaScript (ES6), 167 byte

s=>({A:`${A='Australia'}n Capital ${T='Territory'}`,N:s[2]?'New South Wales':'Northern '+T,T:'Tasmania',Q:'Queensland',S:'South '+A,V:'Victoria',W:'Western '+A}[s[0]])

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.