Avustralya eyaletini genişlet


9

Her biri 2 veya 3 harfli kısaltmaya sahip 8 Avustralya eyaleti ve bölgesi vardır:

  • ACT: Avustralya Başkent Bölgesi
  • NSW: Yeni Güney Galler
  • NT: Kuzey Bölgesi
  • QLD: Queensland
  • SA: Güney Avustralya
  • TAS: Tazmanya
  • VIC: Victoria
  • WA: Batı Avustralya

Göreviniz, geçerli bir Avustralya eyaleti kısaltmasını büyük harfle alan ve doğru tam adı (yukarıdaki gibi büyük / küçük harfe duyarlı) döndüren bir işlev / program yazmaktır.

Bunun, o dildeki her programın kaçınılmaz bir yan etkisi olduğu tek bir satırsonu satırı dışında fazladan boşluk bırakılmasına izin verilmez.

Örneğin:

f("TAS") => "Tasmania"

Standart kurallar (bayttaki en kısa kod kazanır!) ve boşluklar uygulanır.


6
Bu noktada [ state-abbreviation ] etiketini oluşturmamız gerektiğini düşünüyorum .
Cyoce

"Yeni Güney (Uzak) Galler" ne olacak? (Farkında olmayanlar için, "NSFW")
NoOneIsHere

3
Ben bir çözüm ile oynarken, NSW ben oldukça sevdim "Yeni Güney Batı ales" genişletiyordu :)
Steve Bennett

Tuhaf. Etiketi oluşturup ekledim, ancak birisi tekrar kaldırdı.
Steve Bennett

durum kısaltması çok spesifik olabilir. etiketi kısaltmalar / kısaltmalar hakkında bir şeyler yapabilir mi?
Sparr

Yanıtlar:


9

Retina , 135 121 bayt

@Neil sayesinde 13 bayt golf oynadı.

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

Çevrimiçi deneyin!

Dördüncü ve son satırlardaki boşlukları not edin.


Eğer değiştirirseniz ASile asmaniailk, o zaman kalan tüm yerini alabilir Aile s Australia.
Neil

Ayrıca, boşluk eklemenizle yaratıcı olabilirsiniz, şöyle bir şey: Çevrimiçi deneyin!
Neil

(Ama bunun için, \B[A-Z]sizi iki bayt kurtaracaktı.)
Neil

@Neil İpuçları için teşekkürler, önerilerinizi golf için bir bayt daha kullandım.
user41805

5

Jöle , 56 bayt

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

Karakter listelerini alan ve döndüren monadik bir bağlantı.

Tüm davaları çevrimiçi deneyin!

Not: "Avustralya" ve "Bölge" kelimelerinin yeniden kullanılması bayt sayısının azaltılmasına yardımcı olmaz.

Nasıl?

Sekiz durum kısaltmasının sıralarının toplamını almak, modulo 15 8 eşsiz değer verir. Bu modülo 9'un sonuçlarını almak benzersizliği korur.

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)

Avustralya ve Bölgeyi tekrar kullanmanın faydası olmadığı için üzgünüm: /
Steve Bennett

5

Haskell, 193192 bayt

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"

Biraz naif bir çözüm, ama ilkim için oldukça basit bir meydan okumaya gitmek istedim. Haskell'de daha iyinin mümkün olup olmadığından bile emin değilim.

Alanı t'ye taşıyarak bir bayt kaydetti


1
PPCG'ye Hoşgeldiniz!
L3viathan

3

Mathematica, 177 bayt

Açık çözüm: (199 bayt)

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

Geliştirilmiş çözüm: (182 bayt, yalnızca Wolfram Mathematica 10.2 bilgisayarımda çalıştırılabilir)

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

En iyi çözüm:

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

Ne yazık ki tekrar " Territory"sadece 0 bayt kaydedebilir.

Görünüşe göre Mathematica'nın varsayılan Hash işlevi sürümler üzerinde değişir. Ancak bir yöntem eklemek kodu daha uzun hale getirecektir. Mathematica sanal alanının varsayılan Karma işlevini kullanmak artık kodu yaklaşık 9 bayt kısaltabilir.

Mathematica (korumalı alan - şimdi - sürüm 11), 168 bayt

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

Kahretsin, önemsiz cevaptan sadece 21 bayt daha iyi.
Steve Bennett

5
Bekle, yani Mathematica'da bunun için yerleşik yok mu?
Neil

@Neil Önce bunu düşünmeliydim.
user202729

2

Python, 181 bayt

@Jonathan Allan sayesinde 1 bayt kurtarıldı

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]

Çevrimiçi deneyin!


t=' Territory'bence bir bayt kurtarmalı.
Jonathan Allan

2

Sed, 167 157 bayt

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 /

Başlangıçta erteledim ern , ama bu sadece iki kullanım için tasarruf daha pahalı.
Toby Speight

1

PHP 148 143 bayt

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

Jörg Hülsermann sayesinde 5 bayt tasarruf etti .


0

C # , 289 bayt


Veri

  • Giriş String s Durumun kısaltması.
  • Çıktı String Genişletilmiş durum adı

golfed

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

Okunmamış okunabilir

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

Tam kod

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

Salıverme

  • v1.0 - 289 bytes- İlk çözüm.

notlar

  • Yok

(string s)Sadece olabilir s, Bir örtük dönüşü kullanabilirsiniz: s=>new System....ve sondaki noktalı virgül kaldırabilirsiniz.
TheLethalCoder


0

JavaScript (ES6), 167 bayt

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.