Erweitern Sie diesen australischen Staat

9

Es gibt 8 australische Staaten und Gebiete mit jeweils 2 oder 3 Buchstaben:

  • ACT: Australisches Hauptstadtterritorium
  • NSW: New South Wales
  • NT: Northern Territory
  • QLD: Queensland
  • SA: Südaustralien
  • TAS: Tasmanien
  • VIC: Victoria
  • WA: Westaustralien

Ihre Aufgabe ist es, eine Funktion / ein Programm zu schreiben, die bzw. das eine gültige australische Abkürzung in Großbuchstaben verwendet und den korrekten vollständigen Namen zurückgibt (Groß- und Kleinschreibung wie oben).

Es ist kein zusätzliches Leerzeichen zulässig, außer einer einzelnen nachfolgenden Zeilenumbruch, bei der dies ein unvermeidbarer Nebeneffekt jedes Programms in dieser Sprache ist.

Beispielsweise:

f("TAS") => "Tasmania"

Es gelten die Standard- Regeln (kürzester Code in Bytes gewinnt!) Und Lücken.

Steve Bennett
quelle
6
Ich denke, wir müssen an dieser Stelle das Tag [ state-abbreviation ] erstellen .
Cyoce
Was ist mit "New South (Far) Wales"? (Für diejenigen, die es nicht merken, ist es "NSFW")
NoOneIsHere
3
Während ich mit einer Lösung herumspielte, expandierte NSW zu "New South Western Ales", was mir sehr gut gefallen hat :)
Steve Bennett
Seltsam. Ich habe das Tag erstellt und hinzugefügt, aber jemand hat es wieder entfernt.
Steve Bennett
Die staatliche Abkürzung ist möglicherweise zu spezifisch. Vielleicht macht das Tag etwas über Abkürzungen / Akronyme?
Sparr

Antworten:

9

Netzhaut , 135 121 Bytes

13 Bytes Golf dank @Neil durch clevere Space-Insertion-Taktiken, die ein weiteres Byte zum Golfen inspirierten

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

Probieren Sie es online aus!

Beachten Sie die nachgestellten Leerzeichen in der vierten und letzten Zeile.

user41805
quelle
Wenn Sie ersetzen ASmit asmaniazuerst, dann können Sie alle verbleibenden ersetzen As mit Australia.
Neil
Sie können auch mit Ihrer Leerzeicheneinfügung kreativ werden, etwa so: Probieren Sie es online aus!
Neil
(Aber dafür \B[A-Z]hätten Sie zwei Bytes gespart.)
Neil
@Neil Danke für die Tipps, ich habe deine Vorschläge genutzt, um noch ein Byte zu spielen.
user41805
5

Gelee , 56 Bytes

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

Ein monadischer Link, der Listen mit Zeichen erstellt und zurückgibt.

Alle Fälle finden Sie unter Online testen!

Hinweis: Die Wiederverwendung der Wörter "Australien" und "Territorium" trägt nicht dazu bei, die Anzahl der Bytes zu verringern.

Wie?

Die Summe der Ordnungszahlen der acht Zustandsabkürzungen modulo 15 ergibt 8 eindeutige Werte. Wenn Sie die Ergebnisse dieser Modulo 9 verwenden, bleibt die Einzigartigkeit erhalten.

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
quelle
Traurig, dass die Wiederverwendung von Australien und Territorium nicht hilft: /
Steve Bennett
5

Haskell, 193, 192 Bytes

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"

Etwas naive Lösung, aber ich wollte für meine erste eine ziemlich einfache Herausforderung anstreben. Ich bin mir nicht mal sicher, ob in Haskell etwas Besseres möglich ist.

Ein Byte wurde gespeichert, indem das Leerzeichen in t verschoben wurde

Potato44
quelle
1
Willkommen bei PPCG!
L3viathan
3

Mathematica, 177 Bytes

Offensichtliche Lösung: (199 Bytes)

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

Verbesserte Lösung: (182 Bytes, nur auf meinem Wolfram Mathematica 10.2-Computer ausführbar)

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

Beste Lösung:

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

Leider wiederholen " Territory" kann nur 0 Bytes speichern.

Es scheint, dass die Standard-Hash-Funktion von Mathematica über Versionen wechselt. Durch Hinzufügen einer Methode wird der Code jedoch länger. Wenn Sie die Standard-Hash-Funktion der Mathematica-Sandbox verwenden, kann der Code jetzt um etwa 9 Byte kürzer werden.

Mathematica (Sandbox - jetzt - Version 11), 168 Bytes

{a="Australia","Western "<>a,,,,"South "<>a,,a<>"n Capital Territory",,,,"Tasmania","Northern Territory",,,,"New South Wales","Victoria","Queensland"}[[Hash@#~Mod~20]]&
user202729
quelle
Verdammt, nur 21 Bytes besser als eine triviale Antwort.
Steve Bennett
5
Warten Sie, also hat Mathematica dafür nichts eingebaut?
Neil
@Neil Ich hätte zuerst darüber nachdenken sollen.
user202729
2

Python, 181 Bytes

1 Byte dank @Jonathan Allan gespeichert

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]

Probieren Sie es online aus!

Uriel
quelle
t=' Territory'sollte ein Byte sparen, denke ich.
Jonathan Allan
2

Sed, 167 157 Bytes

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
quelle
Ich habe ursprünglich aufgeschoben ern , aber das hat mehr gekostet, als es für nur zwei Verwendungen gespart hat.
Toby Speight
1

PHP, 148 143 Bytes

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

5 Bytes dank Jörg Hülsermann gespart .

user63956
quelle
0

C # , 289 Bytes


Daten

  • Eingabe String s Die Abkürzung für den Status.
  • Ausgabe String Der erweiterte Statusname

Golf gespielt

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

Ungolfed lesbar

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

Vollständiger Code

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

Veröffentlichungen

  • v1.0 - 289 bytes- Erste Lösung.

Anmerkungen

  • Keiner
Auhmaan
quelle
(string s)kann einfach sein s, Sie können eine implizite Rückgabe verwenden: s=>new System....und Sie können das nachfolgende Semikolon entfernen.
TheLethalCoder
0

Rexx (Regina) , 148 147 Bytes

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)

Probieren Sie es online aus!

der Blitz
quelle
Scheint in Großbuchstaben auszugeben?
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
quelle