कुछ कीमतों को समायोजित करने का समय!


19

मुझे यकीन है कि आप $ 10 का उपयोग करने के बजाय $ 9.99 मूल्य योजना के बारे में जानते हैं। एक बड़े रिटेल स्टोर में एक sys एडमिन के रूप में आपकी नई नौकरी में, वे चाहते हैं कि कीमतें समान योजना का पालन करें:

  • सभी कीमतें पूरे डॉलर में हैं, कोई सेंट नहीं।
  • सभी कीमतें 5 या 9 के साथ समाप्त होनी चाहिए, निकटतम पर जा रही हैं, लेकिन यदि अंतिम अंक 5 और 9 के बीच सही है (अंतिम अंक 2 और 7 पर लागू होता है)
  • न्यूनतम इनपुट $ 1 है, और सबसे कम आउटपुट मूल्य $ 5 होना चाहिए।

आपका इनपुट पूर्णांकों की एक सूची है:

12
8
41
27
144
99
3

और आउटपुट को नए मूल्यों की एक सूची चाहिए। उपरोक्त मामले में:

15
9
39
29
145
99
5

क्या हम एक-एक करके इनपुट ले सकते हैं? या एक नई रेखा के अलावा कुछ और द्वारा अलग किया गया?
mınxomaτ

सादगी के लिए मुझे लगता है कि निर्दिष्ट प्रारूप सबसे अच्छा है, इसलिए आप स्वरूपण को संभालने के बजाय वास्तविक समस्या को हल करने पर ध्यान केंद्रित कर सकते हैं। लेकिन निश्चित रूप से एक पंक्ति पर एक पूर्णांक की अनुमति है। :)
सिस्कोथेट

1
हां भाषा-विशिष्ट सूची को संभालना आसान है। लेकिन मैं कब तक विनिर्देशों को बदलते रह सकता हूं? यह एक कारण है कि मैंने कोड गोल्फ में कुछ भी पोस्ट करने में संकोच किया है।
सिस्कोथेट

2
न्यूलाइन को अब एक आवश्यकता के रूप में छोड़ दिया गया है, केवल "एक सूची" निर्दिष्ट करते हुए। मुझे उम्मीद है कि यह चीजों को बेहतर बनाएगा, बदतर नहीं ...!
सिस्कोथेट

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

जवाबों:


13

ब्रेनफक, 4428 बाइट्स (अमान्य)

एक बार जब मुझे पता था कि एल्गोरिथ्म काम कर रहा है, तो मैंने रुचि खो दी और इनपुट हैंडलर को पूरा नहीं किया। इसलिए यह समाधान तकनीकी रूप से समस्या को हल करता है, लेकिन इसका उपयोग करना बहुत कठिन है। जब आप एक इंटरैक्टिव दुभाषिया में कार्यक्रम शुरू करते हैं (तेजी से बेहतर होता है), तो आप अपना "नंबर" दर्ज कर सकते हैं। यदि आपके दुभाषिया नंबर रूपांतरण (मेरा करता है) का समर्थन नहीं करता है, तो इसे बेस 256 में दर्ज किया जाना चाहिए। इसलिए आपके द्वारा दर्ज अधिकतम मूल्य 255 हो सकता है।

यह तब एक लूपिंग मोडुलो करता है यदि संख्या पिछले एक को छोड़कर सभी अंकों को विभाजित करने के लिए 9 से अधिक है। विभाजन परिणाम सहेजे जाते हैं, जबकि अंतिम अंक 5 या 9 के लिए गोल होता है। फिर उन्हें जोड़ा जाता है और मुद्रित किया जाता है। फिर कार्यक्रम सभी उपयोग किए गए रजिस्टरों (शायद ओवरकिल) को साफ करता है और अगले नंबर के लिए पूछता है।

यह सभी विशेष मामलों ( $1, $20/$21 -> $19आदि) को संभालता है । इसे संख्या के लिए 4यहां देखें (लगभग 3 मिनट, वीडियो छोटा):

वीडियो डेमो

कोड

>+<+[>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<[>[-]+<-]>
[<+>>>>>>>>>>>[-],>>[-]<[-]<[>+<<<<<<<<<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>
>>>>[-]>[<+<<<<<<<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>[-]+++++++++>[<<<<+
>>>>-]<[<<<<<<+>+<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]
+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]>>[>>>>-<<<<[-]]<<<[-]<->>>>>>>>[<<<<<<<<->>>>
>>>>-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[>>>>>+<<<<<<<<<<<<<<<->>>>>>>>>>[-]]<<<<<<<<<
-]>>>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<<
<[>[-]+<-]>[<+>>>>>>>>>>>>[-]<[>+<<<<<<<<<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>
>>>>>[-]++++++++++>>>[<<<<<<<+>>>>>>>-]<<<<<<<[>>>>[<<<<<+<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<
<<<<<-]>>[>-[<<+<+>>>-]<<<[>>>+<<<-]+>[<->[-]]<[>>-[>>>>>>>>-<<<<<<<<[-]]+<<[-]]>>-]>>>>
>>>>+<<<<<<<]>>>>>[-]>>[<<+<<<<<<<<+>>>>>>>>>>-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>
>[-]++++++++++>[<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>[>+<<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<
<<<-]>-]>>>>>>>>>[-]<<[>>+<<-][-]>>>[<<<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<
<<<<<<<<<<-]>>>>>>>[-]>>>[<<<+<<<<<<<+>>>>>>>>>>-]<<<<<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>
>>>[>+<<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>>>>>>>[-]<<<[>>>+<<<-][-]>[<+<<<<<
<<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>[-]>>>[<<<+<<<<<<<+>>>>>>>>>>-]<<<<
<<<<<<[>>>>>>>>>>+<<<<<<<<<<-]>>>>>>>[>-<<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>>>>
>>>>[-]<[>+<-]<<<<<<<<<-]>>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>-]
<<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>>>>>>>>>[-]>>[<<+<<<<<<<<+>>>>>>>>>>-]<<<<<<<<<<[>>>>
>>>>>>+<<<<<<<<<<-]>>>>>>>[-]>[<<<<+>>>>-]<[<<<<<<+>+<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<
-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]>>[>>>>-<<
<<[-]]<<<[-]<->>>>>>>>[<<<<<<<<->>>>>>>>-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[>>>>>>>>>
>>>+<<<<<<<<<<<<<<<<<<<<<<->>>>>>>>>>[-]]<<<<<<<<<-]>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<+>>>>>
>>>>>>>>>>-]<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>>>>>>>>>[-]>[<+<<<<<<<<+>>>>>>>>>-]<<<<<<<<<[>
>>>>>>>>+<<<<<<<<<-]>>>>>>>[-]++++>[<<<<+>>>>-]<[<<<<<<+>+<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<
<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]>>[>>
>>-<<<<[-]]<<<[-]<->>>>>>>>[<<<<<<<<->>>>>>>>-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]>>>>>>>>[>>>>
>>+<<<<<<<<<<<<<<<<->>>>>>>>>>[-]]<<<<<<<<<-]<[>[-]+<-]>[<+>>>>>>>>>>>[-]+++++++++>>>>>>
>>+<<<<<<<<<<<<<<<<<<<->-]>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>-]<<<<<<<<<<<
<<<<<[>[-]+<-]>[<+>>>>>>>>>>[-]>[<+<<<<<<<<+>>>>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>
>>>>>[-]++>[<<<<+>>>>-]<[<<<<<<+>+<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<<<-]>>[>>[<+<<<+>>>>-
]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]<[>>>>>>>-<<<<<<<[-]]>>>[-]>>
>[-]>>>>[<<<<+<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>>>>>>[-]+
++++++++<<<<<[<<<+>>>-]>>>>>[<<<<<<<<<<<+>+<<+>>>>>>>>>>>>-]<<<<<<<<<<<<[>>>>>>>>>>>>+<<
<<<<<<<<<<-]>>[>>[<+<<<+>>>>-]<<<<[>>>>+<<<<-]+>>>[<<->>>-<<<<->>>[-]]<<<[>>[-]+<<-]>>-]
>>[>>>-<<<[-]]<<<[-]>>>>>>>[<<<<<<<<+>>>>>>>>-]<<<<<<<<[[-]>>>>>>>[<<<<<<<+>+>>>>>>-]<<<
<<<[>>>>>>+<<<<<<-]<[>>>>>>>>-<<<<<<<<[-]]]->>>>>>>>[<<<<<<<<->>>>>>>>-]<<<<<<<<[>>>>>>>
>+<<<<<<<<-]>>>>>>>>[>>>>>>>>+<<<<<<<<<<<<<<<<<<->>>>>>>>>>[-]]<<<<<<<<<-]<[>[-]+<-]>[<+
>>>>>>>>>>[-]>>>[<<<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>>
->>>[-]<<<[>>>+<<<-]>[-]>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<->-]>>>>>>>>>>>>>>>>>[<<<<<<
<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>>>>>>>>>>[-]+++++<<<<<
<<<<<-]>>>>>>>>>>>>>>>>>>>>>>[<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>-]<<<<[<<<<
<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>-]<<<<<<<<<<<<<<<<<<<[>[-]+<-]>[<+>>>>>>>>>>[-]>>>[<<
<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+<<<<<<<<<<<-]>>>>>>>[-]>>[<<+<<<<<<<+>>>
>>>>>>-]<<<<<<<<<[>>>>>>>>>+<<<<<<<<<-]>>>>>>>[>+<<<<<<<<+>>>>>>>-]<<<<<<<[>>>>>>>+<<<<<
<<-]>>>>>>>>>>>[-]<<<[>>>+<<<-][-]>>>[<<<+<<<<<<<<+>>>>>>>>>>>-]<<<<<<<<<<<[>>>>>>>>>>>+
<<<<<<<<<<<-]>[-]>[-]>[-]>[-]>>>>[<<<<<+[>+<<<<+>>>-]<<<[>>>+<<<-]+>>>>----------[<<<<->
>>>[-]]<<<<[>>+>[-]<<<-]>>[>>+<<<<+>>-]<<[>>+<<-]+>>>>----------[<<<<->>>>[-]]<<<<[>+>[-
]<<-]>>>>>>>>-]<<<<<<<[<++++++++[>++++++>++++++<<-]>.>.[-]<[-]]>[<<++++++++[>>++++++<<-]
>>.[-]]<<++++++++[>>>++++++<<<-]>>>.[-]<<<++++++++++.[-]>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<
<->-]<[>[-]+<-]>[<+<->>-]<<]

आपको एक महत्वाकांक्षा के लिए वोट मिलेगा, काश मैं एक से अधिक दे सकता। :)
सिस्कोथेट

8
मुझे लगता है कि जिफ को मिर्गी की चेतावनी की जरूरत है।
एलेक्स ए।

12

CJam, 19 17 बाइट्स

q~{2-Ab)4>59s=N}/

इसका परीक्षण यहां करें।

CJam- शैली सूची के रूप में इनपुट लेता है और आउटपुट न्यूलाइन को अलग करता है।

व्याख्या

qN/{   e# Run this block for each line of the input...
  ~    e#   Evaluate the current line to get the integer.
  2-   e#   Subtract 2 to get all but the last digit right.
  Ab)  e#   Convert to base 10 (discarding a potential minus sign) and split off
       e#   the last digit.
  4>   e#   Test if it's greater than 4.
  59s= e#   Select the correct digit from the string "59" based on this result.
  N    e#   Push a line feed.
}/

11

अजगर 2, 47

lambda l:[max(5,(n+3)/5*5-(n-2)/5%2)for n in l]

यदि हम गोल मूल्यों के अनुक्रम को देखते हैं, तो हम देखते हैं कि वे 5 के ब्लॉक में आते हैं।

... 25, 29, 29, 29, 29, 29, 35, 35, 35, 35, 35, 39, ...

हम पाते हैं कि हम किस नंबर के ब्लॉक में हैं (n+3)/5(इस मान को कॉल करें J)। फिर, हम के अधिकार के कई मिलता है 5के साथ J*5है, और चीजें व्यवस्थित 30करने के लिए नीचे 29घटा कर 1जब भी Jभी है।

के बजाय विशेष-मामला 1देने के लिए , हम परिणाम को पास करते हैं ।5-1max(5,_)


पायथ संस्करण को ठीक करने के लिए मुझे लगता है कि आप कर सकते हैंmeS,-*hJ/-d2K5K%J2KQ
FryAmTheEggman

2
या 2 बाइट्स कम:m-|*K5hJ/-d2K6%J2Q
जकूबे

1
@ जकुब यह चतुर है, आप इसे कैसे पोस्ट करते हैं?
xnor

ठीक है मैं करूँगा। लेकिन आप अपने पायथन जवाब के लिए विचार ले सकते हैं। यह एक बाइट बचाता है:lambda l:[((n+3)/5*5or 6)-(n-2)/5%2for n in l]
Jakube

8

रेटिना, 32 बाइट्स

अल्पविराम से अलग की गई सूची में इनपुट को स्वीकार करता है। एक अनुगामी अल्पविराम होना चाहिए। एक ही प्रारूप में आउटपुट।

T`d`aa555559`.,
T+`da`ad`\da
a
5

स्पष्टीकरण:

T`               #Transliteration mode.
  d`aa555559`    #Map the digits 0-9 to aa55555999
             .,  #Map only the trailing digits.
T+`              #Do until input does not change.
   da`ad`        #Map a to 9, 0 to a, and 1-9 to 0-8
         \da     #Only do this to each a and the character before each a.
a                #Match all leftover a's. This only happens when the input contains the integer 1.
5                #Replace them with 5.

5

आर, 51 49 47 43 बाइट्स

(f=((n=scan()-2)%/%5+1+(n<0))*5)-(f%%10==0)

इसमें सुधार करने के लिए जगह होनी चाहिए, लेकिन मुझे लगता है कि एक अलग रणनीति बेहतर हो सकती है। स्कैन से पूर्णांक का एक वेक्टर लेता है और पूर्णांक के एक वेक्टर को आउटपुट करता है। अनिवार्य रूप से यह पूर्णांक विभाजन का उपयोग संख्या को नीचे करने के लिए करता है, 1 जोड़ता है और इसे पांच से गुणा करता है। 10 से विभाज्य कुछ भी 1 ले लिया है। यदि n = 1 है तो यह पूर्णांक विभाजन को 1 से बढ़ाता है।

परीक्षण चालन

> (f=((n=scan()-2)%/%5+1+(n<0))*5)-(f%%10==0)
1: 1
2: 12
3: 8
4: 41
5: 27
6: 144
7: 99
8: 3
9: 
Read 8 items
[1]   5  15   9  39  29 145  99   5
> 

5

पायथन 3, 74 82 बाइट्स

a=eval(input())
for i in a:print(round(i,-1)+[5,-1][max(4,i-2)%10>4])

मैंने 11 से कम मूल्यों पर संक्षिप्तता और 1 से 5 का मूल्यांकन करने के लिए आवश्यकता के लिए संघर्ष किया।


अपने कार्यक्रम की तरह लगता है केवल एक पूर्णांक लेता है?
डेनियरो

@daniero सही है, अब सूची को स्वीकार करने के लिए तय किया गया है।
टोड

4

Pyth, 21 18 29 28 बाइट्स

3 बाइट्स काटने के लिए @Jakube का शुक्रिया!

KeQJ-QKI<K2tJ.q;I<K6+J5;E+J9

इसे यहाँ आज़माएँ।

संपादित करें: जाहिरा तौर पर यह अमान्य था। मैंने इसे 11 बाइट की कीमत पर तय किया; मैं इसे और अधिक गोल्फ करने की कोशिश करूँगा।


eQएक ही बात है %Q10, आप असाइनमेंट को भी इनलाइन कर सकते हैं:I<KeQ6+-QK5;E+-QK9
Jakube

अच्छा, मैं उस बारे में नहीं जानता था!
आर.के.

कोई दिक्कत नहीं है। हालांकि आपका दृष्टिकोण गलत है। 9यदि अंतिम अंक है 0या1
जेक्यूब

आह, मैं इस पर काम करूंगा।
आर.के.

4

पायथ, 21 बाइट्स

m?tdtt+d@jC"²a<"6ed5Q

अफसोस की बात है कि मुझे $ 1 को सही ढंग से संभालने के लिए 4 बाइट्स खर्च करने होंगे।


अत्यंत चालाक। आप 1केवल 2 बाइट्स के साथ संभाल सकते हैं । mt|t+d@jC"²a<"6ed6Q
याकूब

4

पायथ, 18 बाइट्स

m-|*K5hJ/-d2K6%J2Q

इसे ऑनलाइन आज़माएँ: प्रदर्शन या टेस्ट सूट

यह उत्तर @ xor के पायथन / पायथ समाधान पर आधारित है। मुख्य अंतर यह है, कि मैं विशेष मामले को 1अलग तरीके से संभालता हूं । के लिए वास्तविक परिणाम 1होगा 0 - 1 = -1। पायथन के orI के उपयोग 0से a को प्रतिस्थापित किया जा सकता है 6, जिसके परिणामस्वरूप 6 - 1 = 5। यह अधिकतम 5और परिणाम लेने के दर्द को बचाता है ।

स्पष्टीकरण:

m-|*K5hJ/-d2K6%J2Q
m                Q   map each number d of the input list Q to:
    K5                  K = 5
       J/-d2K           J = (d - 2) / K
   *K hJ                   K * (J + 1)
  |                     or
             6             6 # if K*(J+1)==0
 -            %J2       minus (J mod 2)

3

हासियम , 133 बाइट्स

func main(){i=[12,8,41,27,144,99,3];foreach(e in i){f=e%10;if(!(e/10==0))print(e/10);if(f<5)r=5;else if(f>5)r=9;elser=f;println(r);}}

चलाने के लिए और देखने के ऑनलाइन विस्तार: http://hassiumlang.com/Hassium/index.php?code=4f1c14f4d699b11da7a6392a74b720c4


लिंक के टूटने पर खेद है, हम कुछ डेटाबेस का काम कर रहे थे। अब काम करता है।
जैकब मिसिरियन

जैसा कि कोड गोल्फ टैग विकी में उल्लिखित है , उत्तर पूर्ण कार्यक्रम या कार्य होने चाहिए। स्निपेट जो केवल इनपुट को हार्डकोड करते हैं, उन्हें अनुमति नहीं दी जाती है, जब तक कि प्रश्न स्पष्ट रूप से अन्यथा नहीं कहता है।
डेनिस

3

TI-BASIC, 19 बाइट्स

int(Ans/5+.6
max(5,5Ans-not(fPart(Ans/2

Xnor के एल्गोरिथ्म का उपयोग करता है। TI-BASIC को मुफ्त में वैश्वीकरण और गुणन मिलता है, लेकिन हम कुछ और बाइट्स खर्च करते हैं क्योंकि इसमें मॉडुलो नहीं है।


1

हास्केल, 114 बाइट्स

g n
 |n>6=9-n
 |n>1=5-n
 |1>0=(-n-1)
f n=show$(read n)+(g$read$(:[])$last n)
main=interact(unlines.(map f).lines)

स्पष्टीकरण:

फ़ंक्शन gवापस आ जाता 9-nहै n>6या फिर 5-nअगर n>1या तो -n-1gको अंतिम अंक दिया जाता है और इनपुट नंबर में जोड़ा जाना चाहिए। समाधान प्राप्त करने के लिए fउपयोग करता gहै (प्लस स्ट्रिंग हेरफेर के बहुत सारे)। इनपुट की प्रत्येक पंक्ति के mainपरिणाम को आउटपुट करता है f


1

माणिक, 55 50 + 1 बाइट्स

इसे nध्वज के साथ चलाएं , जैसे ruby -n prices.rb:। प्रत्येक मूल्य को एक अलग लाइन पर दर्ज करें।

x=$_.to_i
p x<7?5:(x-2).round(-1)+(~/[2-6]$/?5:-1)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.