Perluas negara bagian Australia itu


9

Ada 8 negara bagian dan teritori Australia, masing-masing dengan singkatan 2 atau 3 huruf:

  • ACT: Wilayah Ibu Kota Australia
  • NSW: New South Wales
  • NT: Wilayah Utara
  • QLD: Queensland
  • SA: Australia Selatan
  • TAS: Tasmania
  • VIC: Victoria
  • WA: Australia Barat

Tugas Anda adalah menulis fungsi / program yang menggunakan singkatan negara bagian Australia yang valid dalam huruf besar, dan mengembalikan nama lengkap yang benar (peka huruf besar kecil seperti di atas).

Tidak ada spasi tambahan yang diizinkan, selain satu baris baru di mana ini adalah efek samping yang tidak dapat dihindari dari setiap program dalam bahasa itu.

Sebagai contoh:

f("TAS") => "Tasmania"

Standar aturan (kode terpendek dalam byte menang!) Dan celah berlaku.


6
Saya pikir kita perlu membuat tag [ singkatan-negara ] pada saat ini.
Cyoce

Bagaimana dengan "New South (Far) Wales"? (Bagi mereka yang tidak menyadari, ini "NSFW")
NoOneIsHere

3
ketika saya bermain-main dengan solusi, NSW memperluas ke "New South Western ales" yang saya sukai :)
Steve Bennett

Aneh. Saya membuat tag dan menambahkannya, tetapi seseorang menghapusnya lagi.
Steve Bennett

singkatan negara mungkin terlalu spesifik. mungkin membuat tag sesuatu tentang singkatan / akronim?
Sparr

Jawaban:


9

Retina , 135 121 byte

13 byte golf berkat @Neil dengan menggunakan taktik penyisipan ruang yang cerdas, yang menginspirasi satu byte lagi yang di-golf

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

Cobalah online!

Perhatikan spasi tambahan pada baris keempat dan terakhir.


Jika Anda mengganti ASdengan yang asmaniapertama, maka Anda dapat mengganti semua yang tersisa Adengan Australia.
Neil

Anda juga bisa berkreasi dengan penyisipan ruang Anda, sesuatu seperti ini: Coba online!
Neil

(Tetapi untuk itu, Anda \B[A-Z]akan menghemat dua byte.)
Neil

@Neil Terima kasih atas tipsnya, saya menggunakan saran Anda untuk bermain golf satu byte lagi.
user41805

5

Jelly , 56 byte

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

Tautan monadik yang mengambil dan mengembalikan daftar karakter.

Lihat semua case di Coba online!

Catatan: Menggunakan kembali kata-kata "Australia" dan "Wilayah" tidak membantu mengurangi jumlah byte.

Bagaimana?

Mengambil jumlah ordinals dari delapan singkatan negara modulo 15 memberikan 8 nilai unik. Mengambil hasil dari modulo 9 mempertahankan keunikan.

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)

Sedih karena menggunakan kembali Australia dan Wilayah tidak membantu: /
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"

Solusi yang agak naif, tetapi saya ingin pergi untuk tantangan yang cukup sederhana untuk pertama saya. Saya bahkan tidak yakin apakah lebih baik mungkin di Haskell.

Menyimpan byte dengan memindahkan spasi ke t


1
Selamat datang di PPCG!
L3viathan

3

Mathematica, 177 byte

Solusi yang jelas: (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"|>

Solusi yang ditingkatkan: (182 byte, hanya dapat dijalankan di komputer Wolfram Mathematica 10.2 saya)

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

Solusi terbaik:

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

Sayangnya pengulangan " Territory"hanya bisa menghemat 0 byte.

Tampaknya fungsi Hash default Mathematica berubah dari versi ke versi. Tetapi menambahkan metode akan membuat kode lebih lama. Menggunakan fungsi Hash default dari kotak pasir Mathematica sekarang dapat membuat kode lebih pendek sekitar 9 byte.

Mathematica (kotak pasir - sekarang - versi 11), 168 byte

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

Sial, hanya 21 byte lebih baik daripada jawaban sepele.
Steve Bennett

5
Tunggu, jadi Mathematica tidak memiliki bawaan untuk ini?
Neil

@Neil Seharusnya aku memikirkan itu dulu.
user202729

2

Python, 181 byte

1 byte disimpan berkat @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]

Cobalah online!


t=' Territory'harus menyimpan byte yang saya pikir.
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 /

Saya memang awalnya menunda ern , tetapi harganya lebih mahal dari yang dihemat hanya untuk dua penggunaan.
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]);

Disimpan 5 byte berkat Jörg Hülsermann .


0

C # , 289 byte


Data

  • Input String s Singkatan negara.
  • Output String Nama negara yang diperluas

Golf

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

Tidak disatukan

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

Tidak terbaca dibaca

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

Kode lengkap

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

Rilis

  • v1.0 - 289 bytes- Solusi awal.

Catatan

  • Tidak ada

(string s)bisa saja s, Anda bisa menggunakan pengembalian implisit: s=>new System....dan Anda bisa menghapus tanda titik koma.
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]])

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.