मेरा परिवर्तन गिनें


21

आपका कार्य किसी ऐसे सरणी को सॉर्ट करना है जिसमें "क्वार्टर", "डाइम", "निकेल", और "पेनी" किसी भी संख्या में किसी विशिष्ट क्रम में नहीं है और उन्हें क्रमबद्ध करें ताकि वे इस क्रम में हों: quarter dime nickel penny(दूसरे शब्दों में, सबसे बड़ी कम से कम मौद्रिक मूल्य)।


नियम

  1. आपके कार्यक्रम को अमेरिकी सिक्कों के नाम वाले इनपुट के रूप में एक सरणी लेनी चाहिए और उन्हें मौद्रिक मूल्य से सबसे कम से कम छाँटना चाहिए।
    • उन लोगों के लिए जो अमेरिका से नहीं हैं या परिवर्तन का उपयोग नहीं करते हैं, सबसे बड़े से कम से कम, अमेरिकी सिक्कों के मूल्य हैं:
      • क्वार्टर: 25 सेंट
      • Dime: 10 सेंट
      • निकेल: 5 सेंट
      • पेनी: 1 प्रतिशत
  2. आप इस सरणी को अपनी इच्छानुसार सॉर्ट कर सकते हैं, जब तक कि आउटपुट ऊपर दिखाए गए मौद्रिक मानों द्वारा आदेशित नहीं हो जाता है।
  3. इनपुट को किसी भी तरह से लिया जा सकता है, चाहे वह कमांड-लाइन तर्क हो या एसटीडीआईएन।
  4. एक इनपुट ऐरे में सभी लोअरकेस स्ट्रिंग्स होंगे, कुछ इस तरह से:
    • quarter dime nickel nickel quarter dime penny penny
  5. इनपुट और आउटपुट का वास्तविक प्रारूप आपके ऊपर है।

परीक्षण के मामलों

"penny nickel dime quarter" 
-> "quarter dime nickel penny"

"nickel penny penny quarter quarter quarter dime dime dime dime"
-> "quarter quarter quarter dime dime dime dime nickel penny penny"

"quarter dime nickel nickel quarter dime penny penny"
-> "quarter quarter dime dime nickel nickel penny penny"

यह , इसलिए मानक नियम और खामियां लागू होती हैं।



1
सभी परीक्षण मामलों में आउटपुट शामिल होना चाहिए। मोबाइल में दूसरे और तीसरे मामले को दो लाइनों में दिखाया गया है, इसलिए ऐसा लगता है कि दूसरी पंक्ति आउटपुट है
लुइस मेंडो

4
मैं कनाडा हूँ, क्या मुझे लगता है कि इनपुट में कोई पैसा नहीं है? ;)
भूमिगत

1
@undergroundmonorail अफसोस की बात है, नहीं।
ckjbgames

1
लोनियों और आधा डॉलर का क्या हुआ?
शाम

जवाबों:


26

जाप , 5 3 बाइट्स

ñg9

इसे ऑनलाइन टेस्ट करें!

व्याख्या

मैंने भी, पिछले कुछ हफ्तों में अपनी भाषा में एक छँटाई समारोह जोड़ा है :-) ñएक सरणी और एक फ़ंक्शन में ले जाता है और सरणी को इस तरह से सॉर्ट करता है जैसे कि प्रत्येक आइटम को उस फ़ंक्शन के माध्यम से मैप किया गया था।

gएक स्ट्रिंग पर समारोह एक संख्या में लेता है nऔर रिटर्न n, स्ट्रिंग में वें चार रैपिंग अगर nनकारात्मक या स्ट्रिंग के अंत अतीत है। तार इस प्रकार संरेखित किए जा सकते हैं:

quarterquarter...
dimedimedimedi...
nickelnickelni...
pennypennypenn...

प्रत्येक स्ट्रिंग के 9 वें चार (0-अनुक्रमित) को बोल्ड में हाइलाइट किया गया है। ये सही क्रम में हैं, इसलिए हमें बस इतना करना है ñg9। (हालांकि अब जब मैं इसे वापस देखता हूं, ñg5तो यह भी काम करेगा ...)


यह भी 5 के साथ काम करना चाहिए, मुझे लगता है।
19

@FlipTack हाँ, मैंने सिर्फ उस पर ध्यान दिया। ऐसा नहीं है कि यह एक फर्क पड़ता है ;-)
ETHproductions

यह। नही सकता। रहें। पराजित।
ckjbgames

1
@ckjbgames डेनिस ने कोई उत्तर नहीं दिया; ;-)
ETHproductions

1
@ETHproductions वह शायद करेंगे। बस उसे यह सवाल दिखाओ।
ckjbgames

8

वी , 7 बाइट्स

ú/¨qu©¿

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

यह लगभग एक सप्ताह पहले ( ) में वी में जोड़े गए स्पिफी नए सॉर्ट कमांड का उपयोग करता है ú। मधुर समय!

जिस तरह से यह काम हर लाइन को डिफॉल्ट सॉर्टिंग (एएससीआईआई मान) द्वारा सॉर्ट करना है, लेकिन एक निश्चित रेगेक्स के पहले मैच की अनदेखी करना है। इस मामले में, रेगेक्स है (qu)?, हालांकि इसमें बैकस्लैश का उपयोग करने से बचने के लिए कुछ सकल गैर-एएससीआईआई सामान हैं। यदि आप "क्वार्टर" के पहले दो अक्षरों को अनदेखा करते हैं, तो यह 'ए' से शुरू होता है, और फिर सभी सिक्के पहले से ही वर्णानुक्रम में हैं।

गैर-प्रतिस्पर्धी संस्करण, 4 बाइट्स

ú!/.

यह सुविधा पहले से ही लागू थी, लेकिन मैंने इसे अभी तक बड़े पैमाने पर परीक्षण नहीं किया था, इसलिए इसमें एक बग था जिसे मैंने केवल इस चुनौती के कारण महसूस किया था। कोई TIO लिंक नहीं है क्योंकि TIO थोड़ा पीछे है।

यह हर लाइन को उल्टा करके काम करता है लेकिन प्रत्येक लाइन पर पहले अक्षर की अनदेखी करता है।


8

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

lambda a:a.sort(key=lambda x:x[-5:])

फ़ंक्शन जो सूची में दिए गए प्रमुख फ़ंक्शन द्वारा सूची को क्रमबद्ध करता है।

प्रत्येक सिक्का नाम की स्लाइस तो कर रहे हैं, arter, dime, ickel, और penny- वर्णमाला (या अधिक महत्वपूर्ण बात, क्रमसूचक) क्रम में जो कर रहे हैं।


ओह उफ़ - अगर मुझे elगलत रास्ता नहीं मिलता है तो मुझे याद आती है c: p
जोनाथन एलन


6

पायथन 3 , 42 41 38 बाइट्स

एक अनाम लंबो फ़ंक्शन जो इनपुट को स्ट्रिंग्स की एक सूची के रूप में लेता है, जगह में टाइप करता है।

(जोनाथन एलन द्वारा बहिष्कृत)

lambda x:x.sort(key=lambda s:(s*2)[5])

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

अन्य समाधान जिनके साथ मैंने गड़बड़ की है:

lambda x:x.sort(key=lambda s:s*(s<'q'))
lambda x:x.sort(key=lambda s:(s+'pi')[5])
lambda x:x.sort(key=lambda s:ord(s[3])%16)

5

पॉवरशेल , 21 बाइट्स

$args|sort{($_*3)[9]}

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

व्याख्या

बेशर्मी से ETHproductions के उत्तर (मूल रूप से) में एल्गोरिथ्म चुरा लिया । मैं प्रत्येक स्ट्रिंग को 3 से गुणा करता हूं, फिर परिणामी स्ट्रिंग के 9 वें वर्ण के आधार पर सॉर्ट करता हूं।


$_PowerShell में क्या है ?
cjjbgames

@ckjbgames एक पाइपलाइन में, एक स्क्रिप्टब्लॉक के भीतर, यह वर्तमान आइटम को संदर्भित करता है। तो कुछ ऐसा 1,2,3,4 | ForEach-Object { $_*2 }होगा जो प्रत्येक संख्या 2 को आउटपुट करेगा; स्क्रिप्ट ब्लॉक इनपुट आइटम के अनुसार एक बार चलाया जाता है।
briantist

यह समझ आता है।
ckjbgames

5

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

6ịµÞ

इसे ऑनलाइन आज़माएं! (पाद लेख,ÇYएक प्रीटियर प्रिंट आउट के लिए लाइन फीड के साथ परिणामी सूची में शामिल होता है।)

कैसे?

6ịµÞ - Main link: list of strings
  µ  - monadic chain separation
   Þ - sort the list of strings by the monadic function:
6ị   - the sixth index - Jelly indexing is modular and 1-based

जेली में एक सूची का Nth इंडेक्स Nth आइटम है जो बाईं ओर से शुरू होता है, 1 से गिनता है, और जरूरत पड़ने पर वापस लौटना शुरू कर देता है। (0th दाईं ओर है, -1 उस के बाएं और इतने पर भी)।

तो के छठे चरित्र ['d','i','m','e']है 'i'छह के बाद से दो सापेक्ष चार के सर्वांगसम है।

क्रम में चार सिक्कों का छठा वर्ण क्वार्ट eआर, डी iमी, निक l, pएनी है। ये वर्णमाला में हैं (या इससे भी महत्वपूर्ण, क्रमबद्ध) आदेश।


एक अन्य तरीका है एक ही बात को प्राप्त करने के साथ घुमाया तार द्वारा तरह होगा ṙ5µÞ, जहां सही करने के लिए घूमता है, तार बनाने erquart, imed, lnicke, और penny


5

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

lambda s:s.sort(key="npr".strip)

इसे ऑनलाइन आज़माएं! जगह जगह सूची तैयार करता है।

विचार एक के बिना छँटाई कुंजी समारोह का उपयोग करने के लिए है lambda। एक अच्छा उम्मीदवार था x.strip, जो स्ट्रिंग लेता है xऔर इनपुट में सभी वर्णों के बाएं और दाएं किनारों को हटा देता है। उदाहरण के लिए, "abcdef".strip("faces") == "bcd"

विधि "npr".stripलेता है:

quarter ->  np
dime    ->  npr
nickel  ->  pr
penny   ->  r

जो शाब्दिक रूप से क्रमबद्ध हैं। मुझे nprपाशविक बल से तार मिला । npuऔर nptभी काम करते हैं, और कोई भी छोटा नहीं है।


5

बैश (+ कोरुटिल्स) 11 बाइट्स

golfed

sort -rk1.2

यह काम किस प्रकार करता है

पहले फ़ील्ड के दूसरे वर्ण (शब्द) से "सॉर्ट की" के साथ, पंक्ति के अंत तक उलटा क्रमांक, अर्थात:

uarter
ime
ickel
enny

परीक्षा

>echo penny nickel dime quarter|tr ' ' '\n'|sort -rk1.2

quarter
dime
nickel
penny

यह ऑनलाइन की कोशिश करो!





3

वी , 8 7 बाइट्स

1 बाइट ने @DJMcMayhem को धन्यवाद दिया

Úçq/:m0

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

देखें @ DJMcMayhem का V में उत्तर ( 1 0 बाइट से छोटा है)

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

Ú                    " sort all lines "
 ç                   " globally "
  q/                 "  where there a q is matched, "
    :m0              "  move it to the top of the buffer "

यहां 1 बाइट बड़ा होने पर एक पुराना समाधान है, लेकिन मैं वास्तव में इसे पसंद करता हूं।

वी , 8 बाइट्स

Ú/q
dGHP

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

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

व्याख्या

Ú        " sorts the lines

अब बफर इस प्रारूप में होगा:

dimes
nickels
pennies
quarters

अब केवल एक चीज बची है जो है क्वार्टर को शीर्ष पर ले जाना।

/q      " search for a q "
dG      " delete everything from the first quarter to the end of buffer "
HP      " and paste it at the top of the buffer

आप क्या कर सकते हैं :m0एक बाइट को बचाने (और मुझे टाई) के लिए अपने वैकल्पिक समाधान परÚçq/:m0
DJMcMayhem

@DJMcMayhem धन्यवाद, टीआईएल के बारे में:move
कृति लिथोस


1

टी-एसक्यूएल, 41 36 34 बाइट्स

select*from @ order by right(a,5)

व्याख्या

मान लें कि नाम @के एक एकल स्तंभ के साथ इनपुट को एक तालिका चर में पहले से लोड किया गया है a, जहां प्रत्येक मान एक सिक्का है।

select * from @भाग बॉयलर-प्लेट 'वापसी के लिए सभी मूल्यों को प्राप्त' है। असली जादू order byखंड में होता है ।

के रूप में ही रणनीति का उपयोग करना Johnathan एलन मैं इन सबसे पिछले पांच पात्रों द्वारा (एसक्यूएल पूरी स्ट्रिंग यदि यह बहुत छोटा है वापस आ जाएगी): arter, dime, ickel, penny


qइसके बाद का अगला अक्षर है p, इसलिए साधारण मॉड के लिए मूल्य qसे कम में परिणाम का pएक कारक होना आवश्यक है q, जो कि प्रमुख है। आप पहले 1 घटा सकते हैं और फिर 7 का एक मापांक काम करेगा, लेकिन वह संभवतः कम से कम 113 के रूप में कई बाइट्स ले जाएगा।
नील

@ नील हाँ, मुझे एहसास हुआ कि 113 प्रमुख होने के कारण गिनती को कम करने के मेरे प्रयास बर्बाद हो रहे थे। कर -1 और फिर मॉड 7 अधिक बाइट्स (आवश्यक कोष्ठक सहित)।
ब्रायन जे

1

जावास्क्रिप्ट (ईएस 6), 35 33 बाइट्स

a=>a.sort(([,...a],[,...b])=>b>a)

परीक्षण के मामलों


1

Befunge, 158 बाइट्स

~:0`v0v4<~_
9:%8_^>8*`^1p9\+1g
$:!#@_1-0" ynnep">:#,_>
1-0" lekcin">:#,_>$:!#^_
" emid">:#,_>$:!#^_1-0
>:#,_$1>-:!#^_0" retrauq"
*84g9< ^*84g91-*84g94-*84g96-

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

स्ट्रिंग प्रोसेसिंग और सॉर्टिंग उन चीज़ों के प्रकार नहीं हैं जिन्हें आप आमतौर पर बेफ़ुज में करने का प्रयास करना चाहते हैं, लेकिन यह समाधान जॉन कसुनिच के अवलोकन का लाभ उठा रहा है कि हमें वास्तव में कुछ भी छाँटने की आवश्यकता नहीं है। हम सिर्फ प्रत्येक सिक्के के घटित होने की संख्या (जिसे आसानी से पहले वर्ण से निर्धारित किया जा सकता है) की गणना करते हैं, और फिर उचित क्रम में प्रत्येक सिक्के के कई नाम का उत्पादन करते हैं।

यह अभी भी आकार के मामले में अन्य भाषाओं के साथ प्रतिस्पर्धी नहीं है, लेकिन यह दृष्टिकोण कम से कम बेहतर है अगर हम एक स्ट्रिंग छँटाई अभ्यास के रूप में चुनौती को संभालने की कोशिश करते।



1

APL (Dyalog APL) , 11 बाइट्स

तार की सूची लेता और देता है।

{⍵[⍋↑5⌽¨⍵]}

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

{ अनाम फ़ंक्शन:

⍵[... ] तर्क द्वारा अनुक्रमित

 आरोही बनाने के सूचकांक

 वह मैट्रिक्स जिसकी पंक्तियाँ गद्देदार होती हैं

5⌽ पांच चरणों-घुमाया

¨⍵ तर्क के आइटम

}



1

भूसी , 3 बाइट्स

Öṙ9

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

मेरे Brachylog उत्तर से पोर्ट किया गया है, जो ETHproductions के Japt उत्तर को काटता है, लेकिन इसका सटीक अनुवाद नहीं है क्योंकि यह सरल एक्सेस-ए-एनथ-तत्व के बजाय रोटेशन का उपयोग करता है। वहाँ, मैंने ऐसा इसलिए किया क्योंकि आपको इनपुट के अंत में अनुक्रमणिका करने की अनुमति नहीं है (जो भाषा की घोषित प्रकृति के कारण संभवतः कई परिस्थितियों में काफी सहायक है)। भूसी में, ! करता है , इनपुट के अंत अतीत आप सूचकांक जाने ही मॉड्यूलर रैपिंग के आसपास है कि Japt साथ ñg9उपयोग करता है, लेकिन यह इतना विशेष रूप से इस कार्यक्रम के एक बाइट अब किया जा रहा हो जाएंगे 1 से है: Ö!10

Ö      Sort by
 ṙ     rotation by
  9    9.

0

बैच, 82 बाइट्स

@for %%c in (quarter dime nickel penny)do @for %%a in (%*)do @if %%a==%%c echo %%c

इनपुट को कमांड-लाइन तर्कों के रूप में लेता है और STDOUT को आउटपुट देता है। प्रत्येक सिक्के पर मूल सूची को छानने के परिणामस्वरूप सूचियों को समाप्‍त करके काम करता है।



0

रूबी, 31 बाइट्स

->s{s.sort_by{|i|i[1]}.reverse}

यह हमेशा "निकेल" और "डाइम" को सही ढंग से सॉर्ट नहीं करेगा।
डेनिएरो

0

रूबी, 30 बाइट्स

->m{m.sort_by{|s|s[3].ord^16}}

परीक्षण और त्रुटि से जादुई संख्या मिली। थोड़ा अनाड़ी, लेकिन उपयोग करने से छोटा .reverse


0

पर्ल 6 ,  40 36  34 बाइट्स

*.sort: {(<q d n p>Zxx 1..*).Bag{~m/./}}

कोशिश करो

*.sort: {%(<q d n p>Z=>1..*){~m/./}}

कोशिश करो

*.sort: {%(<q d n p>Z=>^4){~m/./}}

कोशिश करो

विस्तारित:

*\            # WhateverCode lambda ( this is the parameter )

.sort:        # sort using the following code block

{             # bare block lambda with implicit parameter 「$_」

  %(          # treat this list as a hash

    <q d n p> # list of first characters
    Z[=>]     # zipped using pair constructor
    ^4        # Range from 0 up-to 4 ( excludes 4 )

  ){          # get the value associated with this key

    ~m/./     # regex which gets the first character ( implicitly from 「$_」 )

  }

}


0

RProgN , 18 बाइट्स

~{3mtt¢\3mtt¢>}$

व्याख्या की

~               # Zero Space Segment
 {            } # Anonymous Function
  3m            # Repeat the inputted string 3 times
    tt¢         # And take the tenth character of that
       \3mtt¢   # Do the same for the entry underneith
             >  # Compare the ascii value of the two
               $# Sort the input by the anonymous function.

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


0

जावा 8, 128 112 बाइट्स

यह एक लंबोदर अभिव्यक्ति है a java.util.function.Function<String[],String[]>

s->{String r="";for(String k:"q d c p".split(" "))for(String t:s)if(t.contains(k))r+=" "+t;return r.split(" ");}

स्पष्टीकरण: क्रम में 4 सिक्कों में से प्रत्येक के लिए, इनपुट के माध्यम से जाएं और सिक्के के नाम को हर बार परिणाम में जोड़ दें, उस सिक्के के अद्वितीय चरित्र के लिए एक मैच है। परिणाम को एक सरणी में विभाजित करें और इसे वापस करें।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.