ขยายรัฐออสเตรเลียนั้น


9

รัฐและดินแดนของออสเตรเลียมี 8 รัฐแต่ละแห่งมีตัวย่อ 2 หรือ 3 ตัว:

  • ACT: เขตนครหลวงของออสเตรเลีย
  • NSW: นิวเซาธ์เวลส์
  • NT: ดินแดนทางเหนือ
  • QLD: รัฐควีนส์แลนด์
  • SA: ทางใต้ของประเทศออสเตรเลีย
  • TAS: แทสเมเนีย
  • VIC: วิคตอเรีย
  • วอชิงตัน: ​​ออสเตรเลียตะวันตก

งานของคุณคือการเขียนฟังก์ชั่น / โปรแกรมที่ใช้ตัวย่อของรัฐออสเตรเลียที่ถูกต้องในกรณีบนและส่งกลับชื่อเต็มที่ถูกต้อง (กรณีที่สำคัญตามข้างต้น)

ไม่อนุญาตให้มีช่องว่างเพิ่มเติมนอกเหนือจากขึ้นบรรทัดใหม่เดียวซึ่งนี่เป็นผลข้างเคียงที่หลีกเลี่ยงไม่ได้ของทุกโปรแกรมในภาษานั้น

ตัวอย่างเช่น:

f("TAS") => "Tasmania"

มาตรฐาน กฎ (รหัสที่สั้นที่สุดในไบต์ชนะ!) และช่องโหว่ใช้


6
ฉันคิดว่าเราจำเป็นต้องสร้างแท็ก[ ตัวย่อของรัฐ ] ณ จุดนี้
Cyoce

แล้วเรื่อง "New South (Far) Wales" ล่ะ? (สำหรับผู้ที่ไม่ทราบว่าเป็น "NSFW")
NoOne อยู่ที่นี่

3
ในขณะที่ฉันกำลังเล่นกับโซลูชัน NSW กำลังขยายไปยัง "New South Western ales" ซึ่งฉันค่อนข้างชอบ :)
Steve Bennett

แปลก. ฉันสร้างแท็กและเพิ่มแท็ก แต่มีคนลบแท็กนั้นอีกครั้ง
Steve Bennett

ตัวย่อของรัฐอาจเฉพาะเจาะจงเกินไป อาจทำให้แท็กบางอย่างเกี่ยวกับตัวย่อ / ตัวย่อ?
Sparr

คำตอบ:


9

เรติน่า , 135 121 ไบต์

13 ไบต์ golfed ต้องขอบคุณ @Neil โดยใช้กลยุทธ์การแทรกพื้นที่ที่ชาญฉลาด

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

ลองออนไลน์!

บันทึกช่องว่างต่อท้ายบนบรรทัดที่สี่และบรรทัดสุดท้าย


หากคุณแทนที่ASด้วยasmaniaครั้งแรกแล้วคุณสามารถแทนที่ทั้งหมดที่เหลือAS Australiaกับ
Neil

คุณสามารถสร้างสรรค์ด้วยการแทรก Space ของคุณได้ดังนี้ลองออนไลน์!
Neil

( แต่การที่\B[A-Z]จะมีการบันทึกคุณไบต์ที่สอง.)
นีล

@ Neil ขอบคุณสำหรับเคล็ดลับฉันใช้คำแนะนำของคุณเพื่อเล่นกอล์ฟอีกหนึ่งไบต์
user41805

5

เยลลี่ 56 ไบต์

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

ลิงก์ monadic ที่รับและส่งคืนรายการอักขระ

ดูกรณีทั้งหมดที่ทดลองใช้ออนไลน์!

หมายเหตุ:การนำคำว่า "ออสเตรเลีย" และ "ดินแดน" กลับมาใช้ใหม่ไม่ได้ช่วยลดจำนวนไบต์

อย่างไร?

การหาผลรวมของเลขตัวย่อของตัวย่อสถานะแปดแบบโมดูโล 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)

น่าเศร้าที่การนำออสเตรเลียและดินแดนกลับมาใช้ใหม่ไม่ได้ช่วย: /
Steve Bennett

5

Haskell, 193 192 ไบต์

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


1
ยินดีต้อนรับสู่ PPCG!
L3viathan

3

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 เปลี่ยนไปเป็นเวอร์ชั่น แต่การเพิ่มเมธอดจะทำให้โค้ดยาวขึ้น การใช้ฟังก์ชันแฮชเริ่มต้นของ Sandematic 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]]&

ประณามเพียง 21 ไบต์ดีกว่าคำตอบเล็กน้อย
Steve Bennett

5
รอดังนั้น Mathematica จึงไม่มี builtin สำหรับสิ่งนี้?
Neil

@ Neil ฉันควรจะคิดเกี่ยวกับที่แรก
user202729


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 /

เดิมฉันเลื่อนไปern ก่อน แต่ค่าใช้จ่ายสูงกว่าที่บันทึกไว้เพียงสองวิธี
Toby Speight

1

PHP, 148 143 ไบต์

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

ที่บันทึกไว้ 5 ไบต์ขอบคุณที่JörgHülsermann


0

C # , 289 ไบต์


ข้อมูล

  • อินพุต String sตัวย่อของรัฐ
  • เอาท์พุท Stringชื่อรัฐที่ขยายตัว

แข็งแรงเล่นกอล์ฟ

(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];};

Ungolfed

( 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 ];
};

อ่านได้ไม่ดี

// 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 ];
};

รหัสเต็ม

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();
      }
   }
}

ข่าว

  • v1.0 - 289 bytes- โซลูชั่นเริ่มต้น

หมายเหตุ

  • ไม่มี

(string s)สามารถเป็นได้sคุณสามารถใช้การส่งคืนโดยนัย: s=>new System....และคุณสามารถลบเครื่องหมายอัฒภาคต่อท้ายได้
TheLethalCoder


0

JavaScript (ES6), 167 ไบต์

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]])

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.