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.

Steve Bennett
sumber
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.

pengguna41805
sumber
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)
Jonathan Allan
sumber
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

Kentang44
sumber
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]]&
pengguna202729
sumber
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!

Uriel
sumber
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 /
Toby Speight
sumber
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 .

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

Rexx (Regina) , 148 147 byte

a=Australia
t=Territory
s=South
ac=a'n' Capital t
ns=New s Wales
nt=Northern t
qs=Queensland
sa=s a
ta=Tasmania
vi=Victoria
wa=Western a
arg x 3
say value(x)

Cobalah online!

Thllitz
sumber
Tampaknya keluaran dalam huruf besar?
Steve Bennett
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]])

Darrylyeo
sumber