उस ऑस्ट्रेलियाई राज्य का विस्तार करें


9

8 ऑस्ट्रेलियाई राज्य और क्षेत्र हैं, जिनमें से प्रत्येक में 2 या 3 पत्र संक्षिप्त नाम हैं:

  • अधिनियम: ऑस्ट्रेलियाई राजधानी क्षेत्र
  • एनएसडब्ल्यू: न्यू साउथ वेल्स
  • NT: उत्तरी क्षेत्र
  • QLD: क्वींसलैंड
  • SA: दक्षिण ऑस्ट्रेलिया
  • TAS: तस्मानिया
  • VIC: विक्टोरिया
  • WA: पश्चिमी ऑस्ट्रेलिया

आपका कार्य एक फ़ंक्शन / प्रोग्राम लिखना है जो ऊपरी मामले में एक वैध ऑस्ट्रेलियाई राज्य संक्षिप्त नाम लेता है, और सही पूर्ण नाम (केस-संवेदी ऊपर) देता है।

किसी भी अतिरिक्त व्हाट्सएप की अनुमति नहीं है, एक एकल अनुगामी न्यूलाइन के अलावा जहां यह उस भाषा में हर प्रोग्राम का एक अपरिहार्य साइड-इफेक्ट है।

उदाहरण के लिए:

f("TAS") => "Tasmania"

मानक नियम (बाइट्स जीत में सबसे छोटा कोड!) और कमियां लागू होती हैं।


6
मुझे लगता है कि हमें इस बिंदु पर [ राज्य-संक्षिप्त नाम ] टैग बनाने की आवश्यकता है ।
साइओस

"न्यू साउथ (सुदूर) वेल्स" के बारे में क्या? (जो लोग महसूस नहीं करते हैं, उनके लिए यह "NSFW" है)
NoOneIsHere

3
जब मैं एक समाधान के साथ चारों ओर खेल रहा था, तो एनएसडब्ल्यू "न्यू साउथ वेस्टर्न एल्स" का विस्तार कर रहा था, जो मुझे काफी पसंद आया :)
स्टीव बेनेट

अजीब। मैंने टैग बनाया और इसे जोड़ा, लेकिन किसी ने इसे फिर से हटा दिया।
स्टीव बेनेट

राज्य-संक्षिप्त नाम बहुत विशिष्ट हो सकता है। शायद टैग / संक्षिप्तीकरण के बारे में कुछ टैग करें?
शुक्राणु

जवाबों:


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 सुझावों के लिए धन्यवाद, मैंने आपके सुझावों का एक और बाइट गोल्फ में इस्तेमाल किया।
user41805

5

जेली , 56 बाइट्स

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

पात्रों की सूची लेने और लौटाने की एक विवादास्पद कड़ी।

सभी मामलों को देखें इसे ऑनलाइन आज़माएं!

नोट: "ऑस्ट्रेलिया" और "टेरिटरी" शब्दों का पुन : उपयोग करना बाइट काउंट को कम करने में मदद नहीं करता है।

कैसे?

आठ राज्य संक्षिप्तीकरण modulo 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

हास्केल, 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"

कुछ हद तक भोला समाधान, लेकिन मैं अपने पहले के लिए एक काफी सरल चालान के लिए जाना चाहता था। मुझे भी यकीन नहीं है कि हास्केल में बेहतर संभव है।

अंतरिक्ष को टी में स्थानांतरित करके एक बाइट को बचाया


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 बाइट्स, केवल मेरे वुल्फराम मैथमेटिका 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 बाइट्स बचा सकता है।

ऐसा लगता है कि Mathematica का डिफ़ॉल्ट हैश फ़ंक्शन संस्करणों पर बदल जाता है। लेकिन एक विधि जोड़ने से कोड लंबा हो जाएगा। अब 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
रुको, तो गणितज्ञ के पास इसके लिए कोई बिलिन नहीं है?
नील

@ नील मुझे उस बारे में पहले सोचना चाहिए था।
user202729

2

पायथन, 181 बाइट्स

1 बाईट ने @ जोनाथन एलन को धन्यवाद दिया

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]

इसे ऑनलाइन आज़माएं!


t=' Territory'मुझे लगता है कि एक बाइट को बचाना चाहिए।
जोनाथन एलन

2

सेड, 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 , लेकिन यह लागत केवल दो उपयोगों के लिए बचाए जाने से अधिक थी।
टोबी स्पाइट

1

PHP, 148 143 बाइट्स

<?=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 को 5 बाइट्स दिए गए धन्यवाद ।


0

सी # , 289 बाइट्स


डेटा

  • इनपुट String s राज्य का संक्षिप्त नाम।
  • आउटपुट String विस्तारित राज्य का नाम

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

पढ़ने योग्य अनगढ़

// 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

जावास्क्रिप्ट (ईएस 6), 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.