बिजली की दुकान


23

यह NCPC 2005 की एक समस्या है । रॉय में केवल एक एकल विद्युत आउटलेट के साथ एक अपार्टमेंट है, लेकिन उनके पास बिजली स्ट्रिप्स का एक गुच्छा है। उनके पास मौजूद पावर स्ट्रिप्स का उपयोग करके अधिकतम संख्या में आउटलेट की गणना कर सकते हैं। प्रति शक्ति पट्टी आउटलेट की संख्या इनपुट के रूप में दी गई है।

यह पता चला है कि यदि स्ट्रिप्स के आउटलेट की संख्या क्रमशः है

पी1,पी2,...,पीn

फिर आउटलेट की संख्या ,

1-n+Σमैंपीमैं

या

1+पी1-1+पी2-1++पीn-1

कार्यक्रम या फ़ंक्शन का इनपुट सकारात्मक पूर्णांकों की एक गैर-रिक्त श्रृंखला है।

उदाहरण

2 3 4
> 7
2 4 6
> 10
1 1 1 1 1 1 1 1
> 1
100 1000 10000
> 11098

17
और मुझे लगा कि आप पावर स्ट्रिप्स को चेन करने वाले नहीं थे ...
जॉय

जहाँ तक मैं बता सकता हूँ कि मेरा रेटिना उत्तर एकतरफा इनपुट का उपयोग करने वाला एकमात्र उत्तर है। आप चाहते हैं कि टिप्पणी चर्चा पर एक नज़र डालें: codegolf.stackexchange.com/questions/71047/electrical-outlet/… ... यदि आपको लगता है कि एकतरफा समाधान बहुत अधिक हैक का है जो आत्मा में नहीं है चुनौती, मुझे यह बताते हुए खुशी हो रही है कि इनपुट दशमलव में होना चाहिए (और फिर उसके अनुसार मेरे उत्तर को ठीक करेगा)।
मार्टिन एंडर

7
क्योंकि बिजली इतनी महंगी है, आपका कोड जितना संभव हो उतना कम होना चाहिए क्योंकि अधिक ऊर्जा का उपयोग करने से बचने के लिए
बिल्ली

1
@cat समय पुराने हम्सटर संचालित ट्यूरिंग मशीन और मैकेनिकल कंप्यूटरों को खोदने के लिए।
छपरा

1
@immibis यकीन है, लेकिन आउटपुट को बाइट स्ट्रीम में मौजूद जानकारी के रूप में माना जाएगा न कि आपके टर्मिनल द्वारा प्रदान की गई चीज़ों से क्या होता है।
मार्टिन एंडर

जवाबों:



29

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

 1

अनुगामी लाइनफीड महत्वपूर्ण है।

इनपुट एक अंतरिक्ष-पृथक संख्याओं की सूची है ।

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

व्याख्या

कोड बस सभी रिक्त स्थान के साथ-साथ 1स्ट्रिंग से उनके बाद हटा देता है । यहाँ है कि क्यों काम करता है:

यूनीरी में जोड़ सरल है: बस उन संख्याओं को सम्‍मिलित करें जो सीमांकक को हटाने के समान है। 1 से घटाना भी सरल है: बस 1प्रत्येक संख्या को हटा दें । हम हालांकि, घटे हुए इनपुट के योग से 1 अधिक चाहते हैं, इसलिए हम केवल 1रिक्त स्थान के बाद मिलने वाले s को हटाते हैं , जिससे सभी इनपुट पहले घटते हैं।


1
मैं सोच रहा था कि अगर यूनिटी में इनपुट की अनुमति दी जानी चाहिए।
जॉन ड्वोरक

@JDDvorak यह डिफ़ॉल्ट रूप से है, जब तक कि चुनौती स्पष्ट रूप से दशमलव इनपुट निर्दिष्ट नहीं करती है। (जवाब में लिंक देखें।) हालांकि कोई फर्क नहीं पड़ता, जेली वैसे भी जीत रही है।
मार्टिन एंडर

@ मार्टिनबटनर इस प्रश्न और मूल असाइनमेंट दोनों में नमूना डेटा है। क्या आपको नहीं लगता (जब तक कि अन्यथा नहीं कहा गया) कि यह पास होने के लिए एक आवश्यक (हालांकि पर्याप्त नहीं) मानदंड होना चाहिए, कि कोड वर्बटीम नमूना डेटा के साथ काम करता है?
नाइट्रो 2k01 12

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

@ मार्टिनबटनर इमो, यह समस्या नहीं है कि सिफारिश संबोधित कर रही है। अभी भी इसके खिलाफ बोलता है कि (जब तक मैं गलत नहीं हूँ) यह काम नहीं करता है क्योंकि रेटिना में एक समर्थित या देशी संख्या प्रारूप है, लेकिन यह तब होता है जब आप स्ट्रिंग डेटा के रूप में स्ट्रिंग को संसाधित करते हैं। यह हैक है। यह एक चतुर हैक भी है, लेकिन मैं अभी भी आश्वस्त नहीं हूं कि यह नियमों के अनुसार है। यदि अंतरिक्ष-पृथक यूरी संख्या रेटिना में एक देशी प्रारूप था उसी तरह से जैसे कि बाइट्स की एक सूची bf में एक देशी प्रारूप है, मैं सिफारिश लागू होने पर सहमत होता हूं और मेरी एक अलग राय होगी।
नाइट्रो 2k01

9

हेक्सागोनी , 18 14 बाइट्स

.?<_(@'")>{+.!

सामने आया:

  . ? <
 _ ( @ '
" ) > { +
 . ! . .
  . . .

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

मुझे नहीं लगता कि पक्ष लंबाई 2 संभव है, लेकिन वहाँ चाहिए एक अधिक कुशल पक्ष लंबाई 3 समाधान यह है कि हो सकता है।

यह सामान्य "वेतन वृद्धि सभी, योग, वेतन वृद्धि" दृष्टिकोण है, लेकिन मुझे यह दिखाने के लिए बाद में आरेख जोड़ना होगा कि हेक्सागोनी में यह वास्तव में कैसे काम करता है।


7

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

lambda*n:1-len(n)+sum(n)

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


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

1
@ जूझसंत ... जो पूरी तरह से ठीक है। यह एक फ़ंक्शन शाब्दिक है, जो प्रस्तुत करने का एक मान्य रूप है।
पलटें


7

हास्केल, 17 15 बाइट्स

foldl1$(+).pred

प्रयोग उदाहरण: ( foldl1$(+).pred ) [2,4,6]-> 10

पुराना संस्करण, विभिन्न दृष्टिकोण, 17 बाइट्स succ.sum.map pred:।


6

जे, 6 बाइट्स

+/+1-#

सम प्लस एक माइनस लंबाई। कोष्ठबद्ध करें और इसे लागू करें, जैसे:

   (+/+1-#) 2 3 4
7

6

भूलभुलैया , 9 बाइट्स

"?;)!@
+(

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

सामान्य प्राइमर:

  • भूलभुलैया 2 डी और स्टैक-आधारित है। ढेर के निचले हिस्से पर अनंत संख्या में शून्य होते हैं।
  • जब निर्देश सूचक एक जंक्शन पर पहुंचता है, तो यह स्टैक के शीर्ष को यह निर्धारित करने के लिए जांचता है कि आगे कहां मोड़ना है। नकारात्मक छोड़ दिया गया है, शून्य आगे है और सकारात्मक सही है।

यहां हम शीर्ष बाईं ओर शुरू करते हैं ", एक नो-ऑप, दाईं ओर स्थित। अगला है ?, जो एसटीडीआईएन से एक इंट पढ़ता है (दूर के वर्णों को फेंकना यह पूर्णांक, उदाहरण के लिए रिक्त स्थान के रूप में पार्स नहीं कर सकता है)। अब हमारे पास दो मामले हैं:

यदि इनपुट सकारात्मक है, तो हम सही प्रदर्शन करते हैं:

(            decrement top of stack
+            add top two stack elements
             [continue loop]

यदि इनपुट शून्य है (जो EOF पर होता है), तो हम सीधे प्रदर्शन करते हुए आगे बढ़ते हैं:

;            pop zero from EOF
)            increment top of stack
!            output top of stack as number
@            halt program

5

अजगर, 5 बाइट्स

hstMQ

वेतन वृद्धि (राशि (नक्शा (वेतन वृद्धि, इनपुट)))


5

ईएस 6, 25 बाइट्स

a=>a.map(n=>r+=n-1,r=1)|r

4
मैं पोस्ट करने जा रहा था: "दुर्लभ मामलों में से एक जब खेल कम करता है" ... और यह 25 भी है l=>l.reduce((a,b)=>a+b-1)
edc65

@ edc65 हाँ, (,b)महंगा है, लेकिन मुझे वह संस्करण भी पसंद है।
नील


4

05AB1E , 4 बाइट्स

कोड:

E<O>

स्पष्टीकरण:

E     # Evaluates input
 <    # Decrement on list
  O   # Compute the total sum
   >  # Increment on the sum
      # Implicit: output top of the stack

एक सरणी (जैसे [3, 4, 5]) की तरह इनपुट लेता है ।


एक गोल्फ लैंग के लिए बहुत ही सुंदर
फराप

4

तारों से , 26 24 बाइट्स

, + '`      + ** `, +'*.

नई-अलग-अलग पूर्णांकों की अपेक्षा करता है। इसे ऑनलाइन आज़माएं!

-2 बाइट्स के लिए @ मार्टिनबटनर को धन्यवाद।

,           Read line as integer
 + '        Dupe and jump to label 1 if nonzero
`           Set label 0
      +     Push 1
 *          Sub
*           Add
 `          Set label 1
,           Read line as integer
 + '        Dupe and jump to label 0 if nonzero
*           Add
.           Output as integer

लूप को अनियंत्रित किया जाता है ताकि वृद्धि की आवश्यकता को नकारते हुए पहले नंबर को घटाया न जाए। स्टॉरी में महंगा है पुशअप नंबर ...


मैं केवल 20 बाइट्स गिनता हूं।
Addison Crump

1
@VoteToClose क्या आपने प्रमुख स्थान गिने हैं? (मैं मान रहा हूं कि आप 26 बाइट के बारे में बात कर रहे हैं)
Sp3000

4

बैश + जीएनयू उपयोगिताओं, 16

यदि Nपावर स्ट्रिप्स हैं, तो N-1अल्पविराम से अलग इनपुट सूची में विभाजक होना चाहिए । हम सभी को अलग - 1 +-थलग करने के लिए और अंकगणितीय रूप से मूल्यांकन करने की आवश्यकता है:

sed s/,/-1+/g|bc

या एक ही चाल का उपयोग कर:

शुद्ध बैश (कोई बाहरी उपयोगिताओं), 19

echo $[${1//,/-1+}]

3

एपीएल (एनएआरएस 2000), 13 10 बाइट्स

{1+(+/⍵)-⍴∊⍵}

संपादित करें: लिन के (बेहतर) दृष्टिकोण के साथ 10 से नीचे।

{1++/1-⍨⍵}


3

gs2, 5 बाइट्स

(CP437 एन्कोड।)

W&Φd'

वह है read-nums dec m1 sum inc


3

सीजेएम, 7 बाइट्स

q~:(:+)

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

लिन के रूप में एक ही दृष्टिकोण (वेतन वृद्धि, योग, वेतन वृद्धि)। यह भी 8 बाइट्स के लिए काम करता है (और शायद थोड़ा अधिक दिलचस्प है):

q~{(+}*

यह सूची में "कमी, जोड़" को मोड़ देता है। ऐसा करने पर, केवल पहले को छोड़कर सभी तत्वों में वेतन वृद्धि लागू होती है, जैसे कि हमें वेतन वृद्धि पर अलग से ध्यान देने की आवश्यकता नहीं है।


3

सी, 60 59 55 बाइट्स

x;main(s){while(~scanf("%i",&x))s+=x-1;printf("%i",s);}

3

पर्ल 6, 14 बाइट्स

{1+[+] --«@_}

प्रयोग

my &f = {1+[+] --«@_}

say f([2,3,4]) # 7
say f([2,4,6]) # 10
say f([1,1,1,1,1,1,1,1]) # 1
say f([100,1000,10000]) # 11098

मैं पूरी तरह से एक ही चीज़ के लिए अपने जवाब को संपादित करने का इरादा रखता हूं ( html टिप्पणी देखें )
ब्रैड गिल्बर्ट b2gills

11 बाइट्स:{.sum-$_+1}
nwellnhof


2

पर्ल 6 , 20 बाइट्स

put 1+sum --«@*ARGS

(आप <<इसके बजाय उपयोग कर सकते हैं «)

उपयोग:

$ perl6 -e 'put 1+sum --«@*ARGS' 100 1000 10000
11098

«एक पर्ल ऑपरेटर है?
1925 में user253751

@ मिनीबिस वास्तव में यह कई पर्ल 6 ऑपरेटरों का हिस्सा है। @arraya »+« @arrayb ++«@array @array».method @array»++ « a 'space separated' list of words »उनमें से कई मेटा ऑपरेटरों के रूप में जाने जाते हैं, इसमें वे अन्य ऑपरेटरों के साथ गठबंधन करते हैं। (पर्ल 5 के पास वर्तमान में वे ऑपरेटर नहीं हैं।)
ब्रैड गिल्बर्ट 21

2

पर्ल 5 23 + 2 = 25 या 19 + 2 = 21

-apझंडे की आवश्यकता है :

map{$.+=($_-1)}@F;$_=$.

एक फ़ाइल में सहेजा गया और के रूप में चला

perl -ap file.pl

संपादित करें: एक और उत्तर, छोटा (19 + 2) लेकिन मूल रूप से देव-शून्य उत्तर से कॉपी किया गया:

$.+=$_-1for@F;$_=$.

2

एफ #, 25 बाइट्स

Seq.fold(fun s n->s+n-1)1

यह एक फ़ंक्शन है जो पूर्णांक की एक सरणी / सूची / अनुक्रम में लेता है और आवश्यक परिणाम देता है।

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

Seq.foldजब आप ऐसा करते हैं, तो आपको कुछ राज्य को ले जाने के दौरान एक अनुक्रम के प्रत्येक तत्व पर एक फ़ंक्शन लागू करने की अनुमति मिलती है। पहले तत्व पर लागू फ़ंक्शन का परिणाम उस राज्य को देगा जो दूसरे तत्व के लिए फ़ंक्शन में रखा जाएगा, और इसके बाद। उदाहरण के लिए, सूची का योग करने के लिए [1; 3; 4; 10], आप इसे इस तरह लिखेंगे:

Seq.fold (fun sum element -> sum + element) 0 [1; 3; 4; 10]
         (       function to apply        ) ^ (sequence to process)
                                     ( initial state )

जो इस तरह लागू किया जाएगा:

// First, initial state  + first element
0 + 1  = 1
// Then, previous state + next element until the end of the sequence
1 + 3  = 4
4 + 4  = 8
8 + 10 = 18

अंतिम स्थिति का रिटर्न मान होने के साथ Seq.fold


2

S, 5 चार्ट / 7 बाइट्स

ï⒭+‡_

Try it here (Firefox only).

10-बिट वर्ण (thx @Dennis!) के साथ कस्टम एन्कोडिंग का उपयोग करता है। encode('ï⒭+‡_')एन्कोडिंग फ़ॉर्म प्राप्त करने के लिए, और decode(/*ENCODED TEXT HERE*/)एन्कोडेड फ़ॉर्म को डीकोड करने के लिए JS कंसोल में चलाएँ ।

व्याख्या

जावास्क्रिप्ट ES6 के रूप में अनुवाद:

i=>i.reduce(($,_)=>$+--_)

दिलचस्प एन्कोडिंग।
22

यह काफी अच्छी तरह से भी काम करता है।
मामा फन रोल

2

मॉर्निंगटन क्रिसेंट , 1909 1873 1839 बाइट्स

Take Northern Line to Stockwell
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Hammersmith
Take Circle Line to Cannon Street
Take Circle Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Hammersmith
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Turnham Green
Take District Line to Hammersmith
Take District Line to Turnham Green
Take District Line to Notting Hill Gate
Take Circle Line to Notting Hill Gate
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Embankment
Take Circle Line to Temple
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Blackfriars
Take Circle Line to Embankment
Take District Line to Parsons Green
Take District Line to Bank
Take Circle Line to Hammersmith
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Upminster
Take District Line to Becontree
Take District Line to Parsons Green
Take District Line to Embankment
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Northern Line to Angel
Take Northern Line to Bank
Take Circle Line to Bank
Take District Line to Upminster
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

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


"सभी निर्देशों के 90% में जिला लाइन शामिल है।" ऐसा इसलिए है क्योंकि जिला वह है जहाँ सभी अंकगणित स्टेशन हैं। हालाँकि, TIO पर, यह किसी भी उदाहरण के लिए काम नहीं करता है
NieDzejkob


टीआईओ के दुभाषिया में एक बग है और
टर्नहैम

अच्छा पकड़ा। मैंने एक पीआर भेजा है जो इसे ऊपर की तरफ ठीक करता है।
नीदेज्ज्कोब

1

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

import sys
print(sum(map(lambda x: int(x)-1, sys.stdin.readline().split()))+1)

ऐसा लगता है कि आप दो बाइट्स के रूप में एक नई रेखा गिन रहे हैं। हो सकता है कि बाइट को बचाने के लिए इसे सेमी-कोलोन से बदल दें। कुछ रिक्त स्थान भी निकाले जा सकते हैं।
Daffy

1

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

$*.inject(1){|s,v|s+=v.to_i-1}

पर्याप्त सरल - 1 से शुरू होकर, आपूर्ति की गई संख्याओं को जोड़ें, प्रत्येक -1 (कमांड लाइन आर्ग्स में हैं $*)। शर्म injectइतनी लंबी शब्द है।


1

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

$args-join'-1+'|iex

ध्यान दें कि 1 + p1-1 + p2-1 + ... + pn-1इसके बराबर है p1-1 + p2-1 + ... + pn

इनपुट को अलग-अलग कमांड-लाइन तर्क के रूप में लेता है $args। हम -joinएक -1+सीमांकक के साथ मिलकर एक स्ट्रिंग बनाते हैं, जैसे कि 2-1+3-1+4। फिर स्ट्रिंग को Invoke-Expression(इसी तरह eval) पाइप किया जाता है , और परिणाम को आउटपुट करता है।


1

पर्ल, 21 + 2 = 23 बाइट्स

$a+=$_-1for@F;say++$a

आवश्यकता -aऔर -E:

$ perl -aE'$a+=$_-1for@F;say++$a'<<<'2 3 4'
7

आप पहले से ही विभाजित तत्वों के साथ चर -aपाने के लिए झंडे का उपयोग कर सकते हैं @F, और -p के साथ -n को बदल सकते हैं ताकि आप न करें say, इसे 21 + 2 तक कम कर दें:$a+=$_-1for@F;$_=++$a
चैट्टरऑन

-pइसके बजाय का उपयोग करना sayसमान है क्योंकि मुझे $_=वैसे भी उपयोग करने की आवश्यकता है ।
andlrc

@ChatterOne -aएक अच्छा विचार है!
andlrc

1

ब्रेनफक, 15 बाइट्स

मान: संचालक, 0 रिटर्न एक बार सभी इनपुट समाप्त हो गया है, और 0 प्लग के साथ कोई एक्सटेंशन डोरियाँ नहीं हैं। इसके अलावा, IO को ASCII वर्ण कोड के बजाय बाइट मानों में होना चाहिए।

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

स्पष्टीकरण: यह 2 रजिस्टरों का उपयोग करता है। एक "मूल्य" संचायक रजिस्टर, उन उपकरणों की संख्या का प्रतिनिधित्व करता है जिन्हें प्लग किया जा सकता है और एक "वर्तमान कॉर्ड" रजिस्टर जो वर्तमान कॉर्ड के मूल्य का ट्रैक रखता है। यह मौजूदा आउटलेट के लिए 1 से मूल्य बढ़ाकर शुरू करता है। फिर, प्रत्येक एक्सटेंशन कॉर्ड के लिए, यह एक प्लग को उठाए जाने के बाद से मूल्य से एक घटाता है, फिर प्लग की संख्या से मूल्य बढ़ाता है।

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

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

क्या मैं कहीं कार्यक्रम का परीक्षण कर सकता हूं?
पाएल जीडी

धन्यवाद, उन गलतियों को सुधारा। मैं किसी भी ऑनलाइन दुभाषियों से परिचित नहीं हूँ जो बाइट मोड में काम करते हैं। मैं एक कार्यान्वयन को एक साथ फेंक सकता हूं जो किसी भी ऑनलाइन दुभाषिया पर चलने वाले इनपुट से '0' को घटाएगा।
इथन

यदि आप कोड का परीक्षण करना चाहते हैं, तो इसे यहां चलाएँ: copy.sh/brainfuck संख्यात्मक मानों के बीच रिक्त स्थान न डालें। दुर्भाग्य से, चूंकि यह ASCII मोड में चल रहा है, डेमो कोड केवल एकल अंकों के मूल्यों पर काम करेगा। हालाँकि, 15 बाइट संस्करण एक मान पर ठीक से काम करेगा <= 255. इसे चलाने के बाद, अंतिम मान देखने के लिए मेमोरी डंप देखें।
एथन

एक दिन बीएफ में अपेक्षित आईओ के लिए उचित मानक होंगे और हम सिर्फ उदाहरण के लिए 'मानक 3 का उपयोग कर' कहने में सक्षम होंगे जैसे 'इनपुट और आउटपुट सभी अशलील द्वारा समाप्त हो गए हैं'।
छपरा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.