होमवर्क का समय! मुझे एक स्ट्रिंग में सबसे कम अंक भी प्राप्त करें


12

स्टैक ओवरफ्लो से एक और शानदार सवाल एक चुनौती में बदल गया !

एक प्रोग्राम लिखें जो:

  1. उपयोगकर्ता इनपुट के रूप में एक स्ट्रिंग को स्वीकार करता है ( कमांड लाइन तर्क में पाइप नहीं किया जाता है)। इनपुट का डेटा प्रकार एक स्ट्रिंग होना चाहिए, यदि भाषा इनपुट पर ऑटो इस् तेमाल करती है, तो इसे एक स्ट्रिंग पर डाला जाना चाहिए।
  2. पहले निम्नतम अंक के सूचकांक (0 या 1 आधारित) को ढूँढता है ।
  3. प्रिंट 2 पूर्णांक , सूचकांक और सबसे कम अंक भी ।
  4. यदि कोई अंक भी नहीं है , तो -1 को इंडेक्स के रूप में लौटाएं, दूसरा नंबर कुछ भी हो सकता है।
  5. इस उद्देश्य के लिए शून्य भी नहीं है

परीक्षण के उदाहरण, बाईं ओर दिए गए स्ट्रिंग को दाईं ओर दिए गए मानों:

25376  -->  0,2
523726 -->  1,2
583746 -->  4,4
53771  --> -1,0
_4___2 -->  5,2

विजेता: सबसे कम वर्ण गणना वाला कार्यक्रम है। कोई बोनस नहीं, कोई दंड नहीं।

संपादित करें: (स्टडिन के बारे में) मैंने उपयोगकर्ता इनपुट भाग पर खराब कर दिया है, मूल रूप से कोई पाइपिंग डेटा और कोई कमांड लाइन तर्क नहीं है। आपको प्रोग्राम के भीतर ही उपयोगकर्ता को किसी प्रकार का संकेत देना होगा।


4
क्या होगा यदि न्यूनतम पूर्णांक में भी दो अंक हों? ठीक है, एक मजाक।
डॉ। बेलिसियस

5
अड़चन क्या है?
जॉन ड्वोरक

1
@JDDvorak मनमाने नियम, क्यों।

7
शून्य की सीमा भी क्यों नहीं हो रही है? बल्कि अजीब लगता है।
इज़्ज़ी

3
आपकी इनपुट आवश्यकताओं को वास्तव में कोई मतलब नहीं है: अधिकांश प्रणालियों के लिए, इनपुट स्टड से आता है, चाहे प्रोग्राम द्वारा संकेत दिया गया हो या नहीं। इनपुट इनपुट है या नहीं, यह प्रोग्राम के नियंत्रण में नहीं है। - यदि आपका उद्देश्य उपयोगकर्ताओं को एक इंटरैक्टिव कार्यक्रम बनाना था, तो आपको इनपुट और आउटपुट (स्वरूपण सहित), और आवश्यक इंटरैक्शन के बारे में सटीक होना चाहिए था।
मटनवार्क

जवाबों:


6

गोल्फस्क्रिप्ट, 26 (28) अक्षर

'#{gets}'.'246'&8+$1<.@\?

उदाहरण:

;'583746'
.'246'&8+$1<.@\?
#44

;'53771'
.'246'&8+$1<.@\?
#8-1

लाइव टेस्ट: http://golfscript.apphb.com/?c=Oyc1Mzc3MScKLicyNDYnJjgrJDE8LjA9QD8%3D

स्पष्टीकरण:

  • '#{gets}'I / O आवश्यकताओं को पूरा करने के लिए माणिक से बचना है; STDIN को खाली माना जाता है
  • . इनपुट क्लोन करता है
  • '246'&8+यह भी पता चलता है कि इनपुट में कौन से अंक मौजूद हैं, सिवाय 8हमेशा बरकरार रहने के
  • $1< सूची को क्रमबद्ध करें, फिर पहला अंक लेता है, लेकिन इसे एक स्ट्रिंग के रूप में रखता है
  • .@\?स्टैक {अंक, इनपुट, अंक} का आदेश देता है, फिर इनपुट में अंक पाता है; धन्यवाद @peterTaylor मुझे [सरणी, सरणी] के हस्ताक्षर के बारे में सूचित करने के लिए ?

मैं इस बार कल्पना की व्याख्या के साथ बहुत बोल्ड रहा हूं; अर्थात्:

  • ऐनक अनिवार्य नहीं है कि किस क्रम में पूर्णांक आउटपुट हैं; :x?xफिक्स करने के लिए अन्य @ पीटर के सुझाव का उपयोग करें (मुझे अस्थायी चर पसंद नहीं है।
  • युक्ति को दो पूर्णांकों के बीच किसी परिसीमन की आवश्यकता नहीं है; चूँकि पाया गया अंक हमेशा एकल अंक होता है, इसलिए यह अधिक मायने नहीं रखता है। यदि ऐसा होता है, तो संलग्न करें n@(जो स्वैप भी करता है), n\(जो नहीं करता है), या ]`(जो आउटपुट को प्रारूपित करता है ["8" -1])।

वे पागल आवश्यकताएं नहीं हैं, वे मनमानी आवश्यकताएं हैं: पी

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

@LegoStormtroopr केवल उस बिंदु का उल्लेख करता है जिसमें ऑर्डर का उल्लेख है # 4: "यदि कोई अंक भी नहीं है, तो -1 को इंडेक्स के रूप में लौटाएं, दूसरा नंबर कुछ भी हो सकता है"। # 3 आदेश निर्दिष्ट नहीं करता है; "नहीं सीमांकक" बोल्डनेस के बारे में क्या?
जॉन ड्वोरक

ओह, आप सही हैं सर! मैंने आउटपुट के लिए दो नंबरों का उल्लेख किया, लेकिन ऑर्डर नहीं। मुझे सही साबित होना है!

आप बदल सकते हैं .0=@?के साथ .@\?या :x?xएक चरित्र बचाने के लिए और आदेश के ऊपर संदेह से बचने के लिए। कमबैक के 8रूप में अच्छा उपयोग ।
पीटर टेलर

5

एपीएल (37)

(डिफ़ॉल्ट रूप से 1-आधारित, लेकिन पालन करता है ⎕IO)

{×⍴m←⍵/⍨⍵∊'2468':z,⍨⍵⍳⍕z←⌊/⍎¨m⋄¯1,0}⍞

स्पष्टीकरण:

  • : उपयोगकर्ता इनपुट पढ़ें
  • m←⍵/⍨⍵∊'2468': उन सभी वर्णों को हटा दें जो 2468स्टोर नहीं हैं m
  • ×⍴m: देखें कि क्या कोई हैं
  • :: यदि ऐसा है तो:
    • z←⌊/⍎¨m: प्रत्येक वर्ण का मूल्यांकन करें m, सबसे कम संख्या और स्टोर खोजें z
    • z,⍨⍵⍳⍕z: के सूचकांक zमें , उसके बाद वापस लौटें z
  • : अगर नहीं:
    • ¯1,0: वापसी (-1, 0)

1
वाह, मैंने एपीएल को हराया है (जे समाधान के साथ नहीं, लेकिन फिर भी ...)
जॉन ड्वोरक

स्पष्टीकरण? एपीएल बहुत आत्म-व्याख्या कर रहा है ...;)
जर्मन_गुइ

3

अजगर 3, 69

यहां से विचारों का संयोजन ।

s=input();print(([(s.find(x),x)for x in'2468'if x in s]+[(-1,0)])[0]) 

मुझे सूची के बजाय स्ट्रिंग का उपयोग पसंद है, और (अब हटाए गए) `उद्धरण के परिणामस्वरूप चूक।
सिमॉन

@boothby मुझे लगता है कि आपने पायथन का उपयोग करते हुए नोटिस नहीं किया है। 3. अजगर 3 इनपुट में () उपयोगकर्ता इनपुट के रूप में एक स्ट्रिंग को स्वीकार करता है।
वसी

@SimonT `(बैकटिक्स) केवल उद्धरण नहीं हैं। यह अजगर 2 में repr () के लिए एक पदावनत उर्फ ​​है । लेकिन इसकी अब पायथन 3 में उपलब्ध नहीं है। इसलिए, अगर मैं अजगर 3 में किसी चीज पर `` का उपयोग करना चाहता हूं, तो मुझे repr लिखना होगा (कुछ ऐसा है जिसकी लागत 4 और अधिक वर्ण है। Thats क्यों मैं इसे से छुटकारा?)
Wasi

@Wasi हाँ, वास्तव में, मेरी गलती है।
बूथबीस

@Wasi, हां धन्यवाद। मुझे इस बारे में पता था और "अब हटा दिया गया" से मेरा मतलब वास्तव में भाषा के एक हिस्से के रूप में हटा दिया गया था। चीयर्स।
सिमोन

3

रूबी, 60 अक्षर

x=gets.chars.sort.find{|c|c=~/[2468]/};p x ?$_.index(x):-1,x
  • $_द्वारा पढ़ा गया अंतिम इनपुट समाहित करता है gets
  • pinspectतर्कों पर कॉल करता है और परिणाम प्रिंट करता है।

3

perl - - 94 - 53 वर्ण (या 48)

इसके बजाय index()हम शून्य-आधारित दृष्टिकोण का उपयोग करते हैं posऔर एक पर शुरू करते हैं; कोई CPAN नहीं। perl -nEइसे चलाएं और यह इनपुट का इंतजार करेगा (जो इसे प्राप्त भी कर सकता है STDIN)।

पहला मैच ( //) ऑपरेशन $_इनपुट से डिफ़ॉल्ट मूल्य ( ) पर काम करता है , दिए गए सम संख्याओं के खिलाफ मिलान करता है, sortमैचों को एक सरणी में जोड़ता है, और फिर उन्हें "स्केलर सूची" में संग्रहीत करता है ($m)। स्केलर संदर्भ में सॉर्ट किए गए सरणी का सूची मान एक आइटम लंबा होता है और इस प्रकार संख्या में सबसे कम मिलान वाले अंक भी होते हैं।

सबसे कम मिलान वाले अंक को अलग करने के बाद, हम फिर $mएक दूसरे मैच ऑपरेशन के लिए उपयोग करते हैं जो $mमूल स्ट्रिंग में मूल्य की पहली घटना को ढूंढेगा। हम अभी भी डिफ़ॉल्ट मान यहाँ का उपयोग कर रहे $_हैं और हम की सामग्री के खिलाफ मैच बचत कर रहे हैं $mमें $1(के लिए कारण ()चारों ओर $mदूसरा बयान में)। उसके बाद, posऔर sayबाकी (और कम वर्ण की तुलना में indexऔर print)।

perl -nE'($m)=sort/[2468]/g;/($m)/g;$1?say pos.",$1":say"-1,0"'
33467
3,4

यदि आउटपुट ऑर्डर या कॉमास कोई मायने नहीं रखते हैं, तो इस 5 चार्ट को छोटा करना संभव है:

($m)=sort/[2468]/g;/($m)/g;$1?say$1.pos:say"-10"

अपने पहले प्रयास में मैंने दौड़ लगाई और एक त्रुटि की - मैं सिर्फ अजगर और माणिक (लेकिन असफल) को पीटना चाहता था ... आह।

विजेता और अन्य प्रतिभागियों को उनके शांत समाधानों के लिए बधाई - विशेष रूप से perl6:-) इस दृष्टिकोण का एक संभावित पर्ल 6 अनुकूलन का उपयोग कर सकता है " .comb(मसक et.al. द्वारा freenode पर सुझाव दिया गया )।

$_=get;my $n=.comb(/<[2468]>/).min;/$n/;say $/.from//-1,",$/"

अजगर / माणिक की पिटाई पर इतना ध्यान केंद्रित किया गया था कि मैंने एक लाइनर को पोस्ट किया था जो तब काम नहीं करता था जब कोई भी संख्या मौजूद नहीं थी: उत्सुकता से $SHELL"जीत" के लिए अपने इतिहास के उपरोक्त संस्करण का उपयोग कर रहा था । यह कार्य संस्करण हास्यास्पद रूप से लंबा और शर्मनाक है। मुझे सही काम करता है: शर्म से बचने के लिए बाद में छोटा करेगा :-(
जी। Cito

पुराने हैक:if(/[2468]/){for$i(2,4,6,8){if(index($_,$i)>-1){say$i,",",index($_,$i)+1;last}}}else{say"0,-1"}
जी। Cito

2
अच्छा है, लेकिन आगे गोल्फिंग के लिए कमरा बचा हुआ है: ($m)=sort/[2468]/g;/$m/g;say$&?pos.",$&":"-1,0"(47 + 1 बाइट्स, AFAIK की -nअतिरिक्त बाइट खर्च होती है)।
हेइको ओबर्डिएक

एनबी। posऑफसेट देता है। इसलिए प्रभाव में यह आपके उदाहरण में 1-आधारित सूचकांक लौटा रहा है।
ड्रेगेटन

@draegtun oopsie :-) धन्यवाद। @Heiko सच है कि: स्विच अन्यथा की गणना करनी चाहिए perlकी -Mहर बार ;-) जीत
जी Cito

3

पर्ल 6, 37 55 60 वर्ण

$_=get;say m/<{~.comb(/<[2468]>/).min}>/.from//-1,',',$/.Int

संपादित करें: मैंने पहली बार प्रश्न को गलत समझा। यह अद्यतन सही होना चाहिए। यह 2,4,6, या 8 की सबसे कम संख्या का पता लगाता है जिसमें इनपुट शामिल है, और फिर उस सबसे कम संख्या के साथ इनपुट के खिलाफ एक रेगेक्स मैच करता है। $/.fromमैच की स्थिति प्राप्त करता है और ',', $/.Intएक अल्पविराम प्लस मैच ही है, या यदि पाठ मेल नहीं खाता है।

जब आप यहां हैं, तो जी। सीटो को आगे बढ़ाएं , जिन्होंने मुझे टिप्पणियों में और irc पर मेरी प्रविष्टि को ठीक करने में मदद की :)


1
दुर्भाग्य से यह प्रिंट पहले भी नंबर (2468) पाया गया और सबसे कम नहीं :( एनबी। इसके अलावा एक समस्या है $/.fromजब कुछ भी नहीं मिला है (यह शायद मेरे रकुडो के पुराने संस्करण में एक बग है)। यहां आपके समाधान का एक भिन्नता है जो काम करता है। मेरे लिए!) my$x=get;for 2,4,6,8 ->$n{if $x~~/$n/ {say $/.from,",$/";exit}};say "-1 0"; 75 वर्णों पर आता है, लेकिन मुझे यकीन है कि एक छोटा perl6 समाधान बनाया जा सकता है।
draegtun

@draegtun ... मैंने कल अपने perl5 प्रयास के साथ एक समान त्रुटि की (नीचे देखें)। मेरे फिक्स ने 70 वर्ण जोड़े! बस इसे ~ 50 चार संस्करण के साथ अद्यतन किया - जो काम करने लगता है। मुझे लगता है कि यदि आप संख्या में सभी समान अंकों को भी छाँटते हैं तो आप पहले (अब) पहले अंक का उपयोग करके एक मैच कर सकते हैं और सुनिश्चित करें कि आपके पास सबसे कम और पहला है। क्या मैं सही हू?
जी। सीटो

@ G.Cito मुझे अच्छा लगता है और आपके उत्तर को पहले ही +1 कर चुका है। मैं कुछ वर्णों को बंद करने का तरीका देख सकता हूं, लेकिन मैं हीको को देखता हूं कि मैं जो सुझाव देने जा रहा हूं, उससे भी बेहतर है!
ड्रेगटुन

@draegtun ओह, geez, मैंने पूरी तरह से इस सवाल को गलत समझा :( आप का बहुत बहुत धन्यवाद! मैं इस ASAP को अपडेट
करूंगा

@mouq यहाँ एक दृष्टिकोण एक perl5 उदाहरण मैं नीचे तैनात रूप में एक ही दृष्टिकोण का उपयोग करता है है: my $n; $_="333992";$n=.comb(/<[2468]>/).min;/$n/;say $/.from//-1,",$/"। मैंने .combलगभग 20 मिनट पहले सीखा था और मुझे यह पहले से ही पसंद है :-)
जी। Cito

2

जे, 44 अक्षर

echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1

यदि कोई अंक नहीं मिलता है तो इनपुट के अंतिम वर्ण को आउटपुट करता है

उदाहरण:

   echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1
523726
+-+-+
|1|2|
+-+-+
   echo(;{&i){._1,~(#~(#i)&>)'2468'i.~i=.1!:1]1
53771
+--+-+
|_1|1|
+--+-+

स्पष्टीकरण:

  • echo ... i=.1!:1]1इनपुट / आउटपुट है। जिस तरह से मैं चाहता हूँ की तुलना में लंबा है। इनपुट के iरूप में अच्छी तरह से दूर धराशायी है ।
  • '2468'i.~ यदि इनपुट नहीं मिल रहा है तो इनपुट लंबाई को वापस करते हुए इनपुट में प्रत्येक अंक की पहली घटना को भी खोजता है
  • (#~(#i)&>)पढ़ता है "इनपुट की लंबाई से अधिक से अधिक का चयन करें"; दूसरे शब्दों में, उन सूचकांकों का चयन करें जो इनपुट में इंगित करते हैं। जिस तरह से मैं चाहता हूँ की तुलना में लंबा है।
  • _1,~-1 को पीछे की ओर जोड़ता है। अंडरस्कोर नकारात्मक मूल्यों का प्रतिनिधित्व करने का जे का तरीका है।
  • {. पहला तत्व चुनता है
  • (;{&i)इसे दो बक्सों में उस स्थिति में इनपुट चरित्र के साथ मिलाता है; चूँकि हम एक चरित्र के साथ एक संख्या को समेट रहे हैं, गैर-बॉक्सिंग संघटन ( ,) नहीं करेंगे। यदि अनबॉक्स किया गया प्रदर्शन वांछित है, तो सूचकांक ":को दो वर्णों की लागत पर पहले स्वरूपित ( ) करना होगा ।

2

पायथन 2.7 - 76

एक संदर्भ उत्तर मैं पूरी तरह से पिटने की उम्मीद करता हूं। लेकिन लोगों को दूर करने के लिए:

s=raw_input()
print[(s.index(`e`),e)for e in[2,4,6,8]if`e`in s][:1]or(-1,0)

3
आप को बदलने के द्वारा एक चरित्र बंद दाढ़ी कर सकते हैं indexकरने के लिए find; आप भी बदल सकते हैं [2,4,6,8]करने के लिए 2,4,6,8(सामने स्थान के साथ)।
जस्टिन

4
छोटा:print[(s.find(`e`),e)for e in 2,4,6,8if`e`in s+'8'][0]
grc

4
मुझे लगता है कि आपने अपना खुद का नियम तोड़ा है ... कब से कच्चे_पीन नहीं है?
क्रंचर

1
print[(s.index(c),c)for c in'2468'if c in s][0]or(-1,0)
एरिक

2

आर, 104

y=as.integer(strsplit(scan(,""),"")[[1]]);z=which(!y%%2&y);a=z[which.min(y[z])];cat(a,"-1 0"[!sum(a)],y[a])

उदाहरण (R में, इंडेक्स 1 से शुरू होता है):

_4_502
6  2

_3_501
-1 0 

583746
5  4

2

पॉवरशेल, 76 73 71

$s=read-host;2,4,6,8|%{if($i=$s.indexof("$_")+1){"$i,$_";break}};"-1,0"
  • $s=read-host में उपयोगकर्ता इनपुट संग्रहीत करता है $s
  • 2,4,6,8|%{...}{}2,4,6 और 8 अंक के लिए अंदर क्या है चलाता है
  • $i=$s.indexof("$_")+1$iअंक के 1-आधारित सूचकांक में $sया 0यदि अंक नहीं मिला है तो सेट करता है
  • if( $i=... ){...} हालत सच है जब $iनहीं होगा0
  • "$i,$_";break सूचकांक और अंक को आउटपुट करता है, और निष्पादन को रोकता है
  • "-1,0" अन्यथा आउटपुट -1,0

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

1
नियम # 2 कहता है कि सूचकांक 0 या 1 आधारित हो सकता है।
डैंको डर्बिएक

ओह। हाजिर नहीं हुआ। किसी भी तरह से, यहां एक शून्य-आधारित संस्करण है जो केवल 5 वर्ण लंबा है। $s=read-host;(2,4,6,8)|%{if(($i=$s.indexof("$_"))-gt-1){"$i,$_";break}};'-1,0'
इज़्ज़ी

इसके अलावा, मुझे पूरा यकीन है कि चारों ओर कोष्ठक 2,4,6,8अनावश्यक हैं।
इज़्ज़ी

शून्य-आधारित संस्करण को 2 वर्ण लंबा बनाया जा सकता है, यदि आप स्थिति को बदलते हैं:if(1+($i=$s.indexof("$_")))
Danko Durbić

2

सी ++ 11, 173 (दो नई-लाइन वर्ण सहित)

यहाँ संकुचित संस्करण है:

#include<iostream> 
#include<string> 
int main(){std::string s;std::cin>>s;for(char c:"2468")for(char&k:s)if(k==c){std::cout<<(&k-&s[0])<<','<<c;return 0;}std::cout<<"-1,8";}

यहाँ पठनीय संस्करण है:

#include<iostream>
#include<string>
int main() {
    std::string s; // auto s = ""s; (since C++14: -3 characters)
    std::cin >> s;
    for (char c : "2468")
        for (char& k : s)
            if (k == c) {
                std::cout << (&k - &s[0]) << ',' << c;
                return 0;
            }
    std::cout << "-1,8";
}

यहाँ एक पुराना संस्करण है:

C ++ 11, 175 (दो नई-लाइन वर्ण सहित)

यहाँ संकुचित संस्करण है:

#include<iostream>
#include<string>
int main(){std::string s;std::cin>>s;for(char c:"2468"){int i=s.find(c);if(i<s.size()){std::cout<<i<<','<<c;return 0;}}std::cout<<"-1,8";}

यहाँ पठनीय संस्करण है:

#include<iostream>
#include<string>
int main() {
    std::string s;
    std::cin >> s;
    for (char c : "2468") {
        int i = s.find(c);
        if (i < s.size()) {
            std::cout << i << ',' << c; 
            return 0;
        }
    }
    std::cout << "-1,8";
}

कोशिश करो #define o std::cout<<। मुझे लगता है कि यह आपके कोड को 1 वर्ण से विभाजित करता है।

@ user2509848, नहीं, यह वास्तव में 2 अक्षर लंबा है। लेकिन धन्यवाद वैसे भी :)
जूता

k==c?std::cout<<(...),throw 0:0;- सशर्त ऑपरेटर को प्रतिस्थापित कर सकते हैं if, जब आप सभी की जरूरत अभिव्यक्ति कर रहे हैं। throwएक अभिव्यक्ति है और एक चरित्र से भी कम है return
एमएसलटर्स 14


1

C # - 124

मुझे पार्टी करने में थोड़ी देर हो गई है

void Main(string[]a){var x=a[0].Where(w=>char.IsDigit(w));var y=x.Min();Console.Write(y%2==0?a[0].IndexOf(y)+","+y:"-1,0");}

0

हास्केल, 79 वर्ण

s&d=filter((==d).snd)$zip[-1..]$'0':s
main=interact$show.head.("24680">>=).(&)

यह आउटपुट स्वरूपण के साथ थोड़ा तेज़ और ढीला चलता है:

& echo 523726 | runhaskell 16083-LowEven.hs 
(1,'2')
& echo 583746 | runhaskell 16083-LowEven.hs 
(4,'4')
& echo 53771 | runhaskell 16083-LowEven.hs 
(-1,'0')
& echo _4___2 | runhaskell 16083-LowEven.hs 
(5,'2')
& echo 25376 | runhaskell 16083-LowEven.hs 
(0,'2')

0

पॉवरशेल: 145 103

मूल
हटाए गए त्रुटि से परिवर्तन प्रति प्रश्नकर्ता की टिप्पणी से बुझते हैं ।

कोड:

"$([array]::IndexOf(($s=(read-host)-split''|?{$_}),($x=$s|?{$_%2-eq0}|?{$_-gt0}|sort|select -f 1))),$x"

पूर्वाभ्यास:

"... "उद्धरण के भीतर सब कुछ आउटपुट में शामिल किया जाएगा।

$(... )कोष्ठक के बीच सब कुछ एक आदेश के रूप में माना जाएगा, और उस कोड के आउटपुट को कमांड के बजाय स्वयं शामिल किया जाएगा।

[array]::IndexOf(... )इसका उपयोग एरे के साथ एक तत्व का सूचकांक प्राप्त करने के लिए किया जाता है। इसका पहला पैरामीटर खोज की जाने वाली सरणी वस्तु है। दूसरा पैरामीटर पाया जाने वाला ऑब्जेक्ट है। यह केवल पहले मिलान तत्व के सूचकांक को आउटपुट करता है। मैंने IndexOfसीधे तौर पर एक विधि का उपयोग करने की कोशिश की , जिसके विरुद्ध सीधे $s(जैसे: $s.IndexOf($x)लेकिन यह किसी कारण से मुझे अभी तक पता नहीं चला है - यह दावा करता है कि यह विधि उस वस्तु में मौजूद नहीं है।

(... )कोष्ठक के भीतर अभिव्यक्ति के लिए पहला पैरामीटर होगा IndexOf

$s= $ s उपयोगकर्ता इनपुट को संग्रहीत करने के लिए एक चर होगा।

(read-host)-split'' उपयोगकर्ता इनपुट प्राप्त करता है, और इसे वर्णों की एक सरणी में विभाजित करता है। `

|?{$_}अतिरिक्त खाली सरणी तत्वों को फ़िल्टर करता है जो द्वारा उत्पन्न होते हैं -split''

,(... )कोष्ठक के भीतर अभिव्यक्ति के लिए दूसरा पैरामीटर होगा IndexOf

$x= $ s उपयोगकर्ता इनपुट से निम्नतम अंक को संग्रहीत करने के लिए एक चर होगा।

$s|?{$_%2-eq0} $ S से सम संख्याओं को खींचता है।

|?{$_-gt0} शून्य को अमान्य करता है।

|sort शेष वस्तुओं को सॉर्ट करता है, डिफ़ॉल्ट क्रम आरोही है।

|select -f 1 पहली वस्तु को उठाता है, जो अब तक का सबसे कम अंक होगा।

,$xउपरोक्त कोड हमारे निम्नतम अंक के सूचकांक को भी आउटपुट करेगा। यह एक अल्पविराम जोड़ता है, और फिर अंक को स्वयं आउटपुट करता है।

टिप्पणियाँ:

यह शायद नियम # 4 थोड़ा सा खींच रहा है। यदि कोई अंक भी नहीं है, तो आउटपुट में दूसरा नंबर शामिल नहीं होगा।

इसके अलावा, यदि इनपुट में गैर-संख्यात्मक तत्व शामिल हैं, तो यह कुछ गैर-समाप्ति त्रुटियों को फेंक देगा। स्क्रिप्ट अभी भी चलेगी और उचित आउटपुट देगी, लेकिन आप इसे चलाने $ErrorActionPreferenceसे 'SilentlyContinue'पहले सेट करना चाह सकते हैं ।


@ DankoDurbić अब जब आपने मुझे ध्वनि से हरा दिया है, तो क्या आप मुझे यह पता लगाने में मदद करेंगे कि मैं $s.IndexOfयहाँ क्यों इस्तेमाल नहीं कर सका ? यह मुझे यह कहते हुए एक त्रुटि दे रहा था कि विधि उस वस्तु के लिए मौजूद नहीं थी, भले ही $s|gmउसने कहा हो। यह उस सिस्टम पर काम करता है जो मैं अभी कर रहा हूं, लेकिन वह नहीं जिसे मैं आज पहले करने की कोशिश कर रहा था। यह एक संस्करण संगतता मुद्दा है? पहले प्रणाली PSv2 थी, वर्तमान PSv4 है।
इज़्ज़ी

आपका $sहै string[], और $s.indexofकाम नहीं करता है , क्योंकि ...[System.String[]] doesn't contain a method named 'indexOf'जो उचित लगता है (मैं पीएस 2.0 चला रहा हूं)। $s|gmके सदस्यों को देता है System.String, नहीं System.String[]। मुझे यकीन नहीं है कि ऐसा क्यों होता है।
डैंको डर्बिएक

0

vb.net (108 सी)

Sub Main()
t=ReadLine()                          '12c
For Each c In "2468"                  '20c  
i=t.IndexOf(c)                        '14c
If i>=0 Then Exit For                 '21c
Next                                  ' 4c
WriteLine("{0},{1}",i,If(i<0,0,t(i))) '37c
End Sub

थोड़ी सी खुशबू आ रही है यह VB की गतिशील सेटिंग का शोषण कर रहा है। विकल्प स्पष्ट और आयात प्रणालीकंसोल


0

LINQ का उपयोग करके VB.net (193 c)

यह मुख्य रूप से एक LINQ क्वेरी का उपयोग कर रहा है।

Dim r = From d In "2468" Group Join q In ReadLine.Select(Function(c, p) New With {.c = c, .i = p})
                              On d Equals q.c Into g = Group
                                        Skip While g.Count = 0 ' 138c
WriteLine(If(r.Any,r(0).g(0).i&","&r(0).g(0).c,"-1,0"))        '  55c

0

गोल्फ-बेसिक 84, 91 अक्षर

:L1/L1_L2i`L1:fpart(L1,2)2_L1:SortA(L1)@cumSum(L1)=length(L1):Thend`-1#d`cumSum(L1):Endd`L1
  • सुनिश्चित करें कि 0इनपुट में कोई भी नहीं है (यह भी नहीं है, किसने कहा कि यह अजीब होना था?)
  • L1 में इनपुट प्राप्त करें (सूची 1)
  • प्रत्येक मान के लिए 2 का मापांक खोजने का लूप
  • छोटे से उच्चतम तक L1 को क्रमबद्ध करें
  • सूचकांक (या तो -1 या संचयी योग) और सबसे छोटी संख्या प्रदर्शित करें

0

बॉर्न शेल (श), 88 वर्ण

(echo 88;sed 's/./\n&/g')|nl -v-1|awk '{print $2,$1}'|sed '/^[^2468]/d'|sort -n|head -n1

मैंने सोचा कि मैं मज़े के लिए एक स्ट्रिंग-प्रोसेसिंग चीज़ करूँगा। तकनीकी तौर पर यह स्टडिन से पढ़ता है, लेकिन यदि आप इसे अंतःक्रियात्मक रूप से चलाते हैं तो यह उपयोगकर्ता को इनपुट के लिए संकेत देगा क्योंकि कीबोर्ड डिफ़ॉल्ट स्टडिन स्ट्रीम है। लाइनों पर इनपुट को विभाजित करने के लिए मूल शेल कमांड का उपयोग करता है, उन्हें (बीमार nlउपयोगिता का उपयोग करके ), मानदंड फिटिंग लाइनों को फ़िल्टर करें, उन्हें सॉर्ट करें और सबसे कम-अंक एक को आउटपुट करें। प्रिंट 88 -1यदि कोई अंक भी नहीं मिला।


0

सी ++ - 223 221 पात्र:

#include<iostream>
#include<string>using namespace std;
int main(){int s=9;int p=-1;string x;cout<<"Enter characters: ";cin>>x;for(int i=0;i<x.length();i++){int n=x[i]-48;if(n%2==0&n<s){s=n;p=i;}}cout<<p<<", "<<s;return 0;}

पठनीय संस्करण:

#include<iostream>
#include<string>
using namespace std;

int main() {
    int s = 9;
    int p= - 1;
    string x;

    cout << "Enter characters: ";
    cin >> x;

    for (int i = 0; i < x.length(); i++) {
        int n = x[i] - 48;

        if (n % 2 == 0 & n < s) {
            s = n;
            p = i;
        }
    }

    cout << p << ", " << s;

    return 0;
}

यह लंबा है, लेकिन जावा जितना बुरा नहीं है।


यह वास्तव में 221 + 2 (नई लाइन वर्ण) है अन्यथा यह संकलन नहीं करेगा।
जूता

ओह। वर्ड केवल 221 का पता लगाया, मैं इसे बदल दूंगा।

0

जावास्क्रिप्ट 93 वर्ण

b=prompt();((r=b.match(/[2468]/g)||[-1]).sort(function(a,b){return a-b})[0])+","+b.indexOf(r)

सभी ईवेंट नंबर प्राप्त करें, सरणी को सॉर्ट करें और पहले अंक को प्रिंट करें।


0

गणितज्ञ, 157 वर्ण

f = Row@{If[(x = Min@#) == Infinity, -1, Position[#, x][[1, 1]]],
      ",", x} &[IntegerDigits@ToExpression@StringReplace[#,
       {"0" -> "1", x_?DigitQ :> x, _ -> "1"}] /. _?OddQ -> Infinity] &

inputs = {"25376", "523726", "583746", "53771", "_4___2"}

f /@ inputs // Column

1,2

2,2

5,4

-1, ∞

6.2


0

जूलिया, ,४

julia> f(a)=(for i=2:2:8;(k=search(a,'0'+i))==0||return(k,i);end;(-1,0))
julia> f(readline(STDIN))
583746
(5,4)
julia> f(readline(STDIN))
_4___2
(6,2)

जूलिया को वास्तव में गोल्फिंग के लिए इनपुट प्राप्त करने के लिए एक छोटे तरीके की आवश्यकता है। मैंने fऔर एक कॉल की परिभाषा गिनाई f। एक आधारित अनुक्रमण इसलिए है कि उत्तर उदाहरणों से भिन्न हैं।


0

जावास्क्रिप्ट - 53 वर्ण

for(y=prompt(x=0);x<8&&(i=y.indexOf(x+=2))<0;);x+''+i

संकेत और आउटपुट से इनपुट पढ़ता है (कंसोल के लिए) सबसे कम भी चरित्र (फिर बिना परिसीमा के) उस चरित्र का पहला सूचकांक; यदि कोई गैर-शून्य भी वर्ण नहीं हैं, तो यह आउटपुट करता है 8-1


0

C, 110 वर्ण

i,f,r,c,m=9;main(){while(r=getchar()>31){c=r-48;i++;if(c>=0&&~c&1&&c<m)m=c,f=i;}printf("%i,%i",m>8?-1:f-1,m);}

ungolfed:

i,f,r,c,m=9;
main(){
  while(r=getchar()>31){
    c=r-48;
    i++;
    if(c>=0&&~c&1&&c<m) m=c,f=i;
  }
  printf("%i,%i",m>8?-1:f-1,m);
}

0

जावास्क्रिप्ट, 69

a=prompt(),b=[-1,9];for(i in a)if(+a[i]%2==0&&+a[i]<b[1])b=[+i,+a[i]]

मान पढ़ता है, प्रत्येक वर्ण के माध्यम से पुनरावृत्ति करता है, यदि संख्या प्रतिनिधित्व मॉड 2 0 के बराबर है और संख्या कम है जो पहले से ही संग्रहीत है b, मानों को बदलेंb




0

जावास्क्रिप्ट / jQuery 149

golfed

$(function(){
var i=prompt(),k=-1,n=0,c,e="2468";
while(n<i.length){c=i.charAt(n);k=e.indexOf(c);if(k>=0){break;}n++;}$('#d').append(k+","+n);
});

पूर्ण स्रोत

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div id="d"></div>
<script type="text/javascript">
$(function(){
var i=prompt();
var k=-1;
var n=0;
var c;
var e="2468";
while(n<i.length){
c=i.charAt(n);
k=e.indexOf(c);
if(k>=0){
break;
}
n++;
}
$('#d').append(k+","+n);
});
</script>
</body>
</html>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.