Розгорніть цю австралійську державу


9

Є 8 австралійських штатів і територій, кожна з яких має абревіатуру з двох або трьох літер:

  • ACT: Столична територія Австралії
  • NSW: Новий Південний Уельс
  • NT: Північна територія
  • QLD: Квінсленд
  • SA: Південна Австралія
  • ТАС: Тасманія
  • VIC: Вікторія
  • WA: Західна Австралія

Ваше завдання - написати функцію / програму, яка має правильну австралійську абревіатуру штату у верхньому регістрі та повертає правильне повне ім’я (залежно від регістру, як вище).

Не допускається жодного додаткового пробілу, окрім одного зворотного нового рядка, коли це неминучий побічний ефект кожної програми на цій мові.

Наприклад:

f("TAS") => "Tasmania"

Стандартний застосовуються правила (найкоротший код у байтах виграє!) та лазівки.


6
Я думаю, нам потрібно створити тег [ абревіатура штату ] в цей момент.
Cyoce

Що з "Новим Південним (Далеким) Уельсом"? (Для тих, хто не усвідомлює, це "NSFW")
NoOneIsHere

3
поки я грав із рішенням, NSW розширювався до "Нового південно-західного алеся", який мені дуже сподобався :)
Стів Беннетт

Дивно. Я створив тег і додав його, але хтось знову його видалив.
Стів Беннетт

абревіатура стану може бути занадто конкретною. може, зробити тег дещо про скорочення / абревіатури?
Спарр

Відповіді:


9

Сітківка , 135 121 байт

13 байт в гольф завдяки @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.
Ніл

Ви також можете проявити творчість, вставивши простір, приблизно так: Спробуйте в Інтернеті!
Ніл

(Але для цього \B[A-Z]врятували б ти два байти.)
Ніл

@Neil Дякую за поради, я використав ваші пропозиції, щоб пограти ще на один байт.
користувач41805

5

Желе , 56 байт

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

Монадічне посилання, що приймає та повертає списки символів.

Дивіться всі випадки на " Спробуйте в Інтернеті!

Примітка: повторне використання слів "Австралія" та "територія" не допомагає зменшити кількість байтів.

Як?

Якщо взяти суму порядків восьми державних скорочень за модулем 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)

Сумно, що повторне використання Австралії та території не допомагає: /
Стів Беннетт

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

Математика, 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 байт.

Здається, що за замовчуванням функція Hash Mathematica змінюється у порівнянні з версіями. Але додавання методу зробить код довшим. Використовуючи функцію Hash за замовчуванням у пісочниці Mathematica тепер код може бути коротшим приблизно на 9 байт.

Математика (пісочниця - зараз - версія 11), 168 байт

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

Чорт, лише на 21 байт краще тривіальної відповіді.
Стів Беннетт

5
Зачекайте, значить, у Mathematica для цього немає вбудованого?
Ніл

@Neil Я повинен був подумати про це спочатку.
користувач202729


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


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

Безумовно

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.