1, 2, 3, 4, 5, 6, 7, 8, और 9 को "एक", "दो", "दो", आदि में बदलें।


47

विजेता: प्रोफेसरोफिश का बैश जवाब ! पूरे 9 बाइट्स! वाह!

आप अपना जवाब प्रस्तुत करना जारी रख सकते हैं, हालाँकि अब आप जीत नहीं सकते। मूल पद के लिए रखा गया पद:


आपका लक्ष्य एक पूरी संख्या को 1-9 के बीच उस शब्द में परिवर्तित करना है जो उसका प्रतिनिधित्व करता है।

  • आपको दशमलव के बारे में चिंता करने की आवश्यकता नहीं होगी
  • उपयोगकर्ता एक नंबर इनपुट करेगा। मान लें कि वे कभी भी 10 या उच्चतर कुछ भी दर्ज नहीं करेंगे
  • उपयोगकर्ता को कुछ बिंदु पर संख्या टाइप करनी चाहिए, हालांकि कार्यक्रम जिस विधि से पढ़ता है वह कोई फर्क नहीं पड़ता। यह स्टडिन के साथ हो सकता है, एक पाठ फ़ाइल पढ़ना, आदि, हालांकि उपयोगकर्ता को अपने कीबोर्ड पर 9 बटन दबाए जाने चाहिए (उदाहरण के लिए) किसी बिंदु पर
  • यह संवेदनशील नहीं है (यानी, "एक", "एक", "oNe", "OnE", आदि सभी स्वीकार्य हैं)
  • HTTP / etc अनुरोधों को अनुमति दी जाती है, हालांकि सर्वर द्वारा निष्पादित किसी भी कोड को आपके अंतिम कोड की बाइट काउंट के लिए गिना जाता है (उदाहरण के लिए अगर मेरे पास C ++ प्रोग्राम एक HTTP अनुरोध करता है, तो HTTP अनुरोध में प्रयुक्त PHP कोड मायने रखता है )
  • जो कुछ भी संकलित और चला सकता है वह स्वीकार्य है

  • यह प्रतियोगिता 27 जून 2014 (पोस्टिंग से 7 दिन) पर समाप्त हो गई है।
  • यह एक , इसलिए सबसे छोटा कोड जीतता है

2
अनुगामी व्हाट्सएप (यानी one ) स्वीकार्य है?
grc

1
@grc हाँ, जब तक प्रोग्राम वर्ड को आउटपुट करता है।
जॉन

1
आपको यह निर्दिष्ट करना चाहिए कि केवल दी गई संख्या मुद्रित हो सकती है और अन्य संख्याएं नहीं।
पिन्ना_बे

1
@Pinna_be उदाहरण के लिए, अगर मैं इनपुट करता हूं, तो आप तकनीकी रूप से आउटपुट होने के बावजूद 3आउटपुट नहीं कर सकते । इसी तरह, आप आउटपुट नहीं कर सकते , आदिone two three four five six seven eight ninethreethree seven
जॉन

1
यह सवाल काफी अच्छा था। लेकिन मुझे तिथि सीमा जोड़ना पसंद नहीं है। विशेष रूप से, तिथि सीमा को 7 दिन पहले नहीं, बल्कि तिथि सीमा से ठीक पहले जोड़ा गया है।
निकोलस बारबुल्स्को

जवाबों:


19

बैश (bsdgames के साथ), 9

number -l

मानक इनपुट से पढ़ता है।

मुझे नहीं पता कि इसके लिए उपयोगिता क्यों है, लेकिन जो भी हो।


2
मुझे यकीन नहीं है कि मुझे bsdgames स्थापित करना पसंद है और फिर इसे "बैश" कहना, हालांकि मैं स्वीकार करूंगा कि मेरा आरक्षण व्यक्तिपरक है।
पॉल ड्रेपर

@PaDDraper न तो मैं। मैं इसे एक गंभीर जवाब के रूप में पोस्ट नहीं किया था, मुझे लगता है कि अन्य जवाबों में से एक को स्वीकार करने योग्य है

5
यह एक मानक खामी नहीं है?
जस्टिन

2
@Quincunx हाँ, यह मूल रूप से है। यद्यपि अधिकांश चीजें बाश में बाहरी उपयोगिताओं हैं, मैं bsdgames पैकेज को बहुत अनुमेय (grep, wget, coreutils, sed, bc ...) के रूप में नहीं गिनूंगा।

132

अजगर 2, 64

print' ottffssennwhoiieiieoruvxvgn  ere ehe  e   nt'[input()::9]

यह कुछ अतिरिक्त व्हाट्सएप के साथ स्ट्रिंग जैसा दिखता है (लंबवत पढ़ने की कोशिश करें):

o t t f f s s e n
n w h o i i e i i
e o r u v x v g n
    e r e   e h e 
    e       n t

जैसा कि नीचे दिए गए टिप्पणियों में बताया गया है, [input()::9]दिए गए सूचकांक पर शुरू होता है और हर नौवें बाद के चरित्र का चयन करता है।


9
ओह, बकवास, मुझे यह पसंद है। शायद यह इंगित करने के लायक है कि यह अजगर 2 है, वैसे।
अंडरग्राउंडोरेल

3
कृपया समझाईए! :)
क्रिस्टोफर ओहलसन

6
@ChristoferOlsson स्ट्रिंग के अंत से लेकर , जैसे या इसके चरणों में input()::9एक सीमा है , जो वास्तव में सूचक हैं जिस पर संबंधित शब्द के अक्षर पाए जाते हैं। input()91,10,19,28,373,12,21,30,39
मार्टिन एंडर

1
@ m.buettner धन्यवाद! वह अच्छा हैं।
क्रिस्टोफर ओहेलसन

6
क्या यह कुछ ऐसा नहीं है जैसे रेल-बाड़ का सिफर क्या करता है? (रास्ते में एक साफ समाधान के लिए +1।)
लू

18

आम लिस्प - 22 बाइट्स

यहाँ एक सामान्य है (केवल एक-दस के लिए नहीं):

(format nil"~R"(read))

ओह, आप आर्डिनल (पहले, दूसरे, ... तीन-सौवें ...) चाहते हैं? ठीक!

(format nil"~:R"(read))

10
क्या यह एक मानक खामी नहीं है?
seequ

2
क्या अर्थ में लूपोल? यह स्पष्ट रूप से हाइपरस्पेक में परिभाषित किया गया है: lispworks.com/documentation/lw50/CLHS/Body/22_cba.htm
filcab

10
इस रूप में: meta.codegolf.stackexchange.com/a/1078/20356
23

3
चाहे यह एक मानक खामी है या नहीं, यह वही है जो मैं यहाँ पोस्ट करने के लिए आया था। +1 :)
जोशुआ टेलर

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

16

BASH 51

इसलिए मैंने अपने दूसरे विचार का उपयोग करते हुए एक और बनाया और दूसरों से कुछ मदद ली:

set one two three four five six seven eight nine

$X

जहाँ 'X' वह नंबर है जो आप चाहते हैं।


BASH 48 (67)

67 \nलाइन ब्रेक के साथ

मुझे यकीन नहीं है कि यह पूरी तरह से मायने रखता है, क्योंकि यह एक फ़ाइल से पढ़ रहा है, लेकिन:

sed -n Xp a

कहां "X" इनपुट है और कहां aएक फाइल है:

one
two
three
four
five
six
seven
eight
nine

फ़ाइल 36 वर्ण है, और बैश कमांड 13 है।

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

फ़ाइल की प्रत्येक पंक्ति को क्रमांकित किया गया है, जिसकी शुरुआत 1. है, इसलिए '1' पहली पंक्ति में है, 2 पर 'दो'। कमांड, sed -n 'Xp' aकहता है, "कृपया फ़ाइल के लाइन 'X' पर सूचीबद्ध क्या प्रिंट करें 'a' sedएक यूनिक्स स्ट्रीम संपादक है। -nका अर्थ है चुप रहना, या केवल अनिवार्य रूप से बाकी सब को अनदेखा करना। Xpइसका मतलब है कि लाइन 'X' पर क्या प्रिंट है।


2
अच्छा पहला जवाब! समय निकालने के लिए धन्यवाद कि हम इस साइट पर अपने उत्तरों को कैसे प्रारूपित करते हैं। प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है!
जस्टिन

2
आपने लाइनफीड की गिनती नहीं की है a
डेनिस

1
पहले की तुलना में एक बाइट कम है, एक कमांड-लाइन तर्क को स्वीकार करता है और अतिरिक्त फ़ाइलों की आवश्यकता नहीं होती है: pastebin.com/qdbXKQGP बैश लापता हेरेडोक सीमांकक के बारे में शिकायत करेगा, लेकिन यह डैश और जेड के साथ ठीक चलेगा।
डेनिस

1
@ डेनिस ओह कूल मुझे यह पसंद है। क्या मैं अब आपके साथ अपना उत्तर संपादित करने वाला हूं? क्षमा करें, कोड गोल्फ में नया हूँ।
एरिक लेगरग्रेन ने

1
आप 'उद्धरणों को छोड़ सकते हैं । आप बाहरी फ़ाइल के बजाय यहां स्ट्रिंग का उपयोग करने का भी प्रयास कर सकते हैं। लेकिन आपको वास्तव में अपनी फाइल में लाइन ब्रेक को गिनना चाहिए।
डिजिटल ट्रामा

16

सी # - 127 (86/46)

यदि आप केवल निष्पादन योग्य भाग लेते हैं ...

Console.Write(((HourOfDay)Console.Read()-48));

और अगर HourOfDayसिस्टम नेमस्पेस का हिस्सा होता तो आपको 46 वर्णों की आवश्यकता होती। दुर्भाग्य से यह बैठता है System.DirectoryServices.ActiveDirectoryजिसमें यह 86 बनाता है ... दूसरा शोर इसे खराब करता है।

यह कमांडलाइन (127 वर्ण) से प्राप्य और चलने योग्य है:

using System;class P{static void Main(){Console.Write((System.DirectoryServices.ActiveDirectory.HourOfDay)Console.Read()-48);}}

अगर cg2.cs नामक फ़ाइल में सहेजा गया है

csc cg2.cs /r:System.DirectoryServices.dll  && cg2

यह कैसे काम करता है?

HourOfDay एक एनुम प्रकार है, इसलिए हम जादू स्थिरांक के बजाय नाम का उपयोग कर सकते हैं। Enum प्रकारों में एक ToString () कार्यान्वयन होता है जो आपको मूल्य का नाम देता है । आप एक एनुम के लिए एक इंट कास्ट कर सकते हैं। Console.Read () इनपुट स्ट्रीम से एक वर्ण को पूर्णांक के रूप में दर्शाया गया है। टाइपिंग '1' 49 देता है , HourOfDay'वन' को वापस करने के लिए 48, 1, कास्ट / बॉक्स पाने के लिए प्रतिस्थापित करें ।

इस एक ही चाल के पॉवर्सशेल संस्करण पर एक नज़र डालें


यह कैसे काम करता है ? मान लीजिए कि मैं प्रवेश करता हूं 9. तब कार्यक्रम क्या करता है?
निकोलस बारबुल्स्को


यह -48यहाँ क्या करता है?
निकोलस बारबुल्स्को

2
@NicolasBarbulesco ने यह कैसे काम किया? पैरा। क्या इस का कोई मतलब निकलता है?
रेने

1
@ निकोलस बार्बुल्स्को - यह वर्णानुक्रम में क्रमबद्ध है। जो "ये शब्द संख्याएं हैं" को छोड़कर हर संदर्भ में समझ में आता है। चूंकि मुझे यकीन है कि प्रलेखन स्वचालित रूप से उत्पन्न होता है, इसलिए यह विशेष लेख को एक लेख से कोई मतलब नहीं होगा।
बोबसन

13

Befunge 98, 116 105 103 बाइट्स

&1-       v
vvvvvvvvvj<
"""""""""
etnxereoe
nheivuewn
igvsiorto
nie"ffh""
"es ""t
 ""   "
>>>>>>>>>4k,@

इसके लिए बीफ नहीं बनाया गया ...

स्पष्टीकरण:

&1-           ;Grab the input number (`n`) and subtract 1 from it
&1-       v   ;Start moving downwards
          <   ;Start moving leftwards
         j    ;Jump `n - 1` characters to the left.
vvvvvvvvvj    ;Redirect each of the possible locations to jump to, sending the IP down.

        "     ;If `n` was 1, push `o, n, e` onto the stack (`o` is at the bottom)
        e
        n
        o
        "

       "      ;If `n` was 2, push `t, w, o` onto the stack
       o
       w
       t
       "

    *
    *
    *

"             ;If `n` was 9, push `n, i, n, e` onto the stack
e
n
i
n
"

>>>>>>>>>     ;Collect all the different possible positions the IP could be in, and send it right
>>>>>>>>>4k,  ;Print the top 5 chars. If there are less than 5, the rest are null characters. This is allowed
            @ ;End of program

8
@ डेनिस मैं नहीं देख सकता कि इतना कठिन कैसे हो सकता है। बस फ़ाइल ले लो, इसे एक में बदल दें char[][], एक स्थान xऔर yस्थान रखें, और उस स्थान पर चरित्र निष्पादित करें। सबसे मुश्किल काम हर संभव चरित्र के लिए ऑपरेशन को परिभाषित करना होगा।
जस्टिन

1
आप आसानी से एक के साथ दो बाइट्स बचा सकते हैं &1-
हर-वदीम

10

जावास्क्रिप्ट 68

Atob / btoa एक गरीब आदमी का कंप्रेसिंग टूल हो सकता है (लेकिन यदि आप कंसोल में यह कोशिश करना चाहते हैं, तो आप एक बार देखे गए स्वरूपित पाठ से कॉपी नहीं कर सकते। 'संपादन' पर जाएं और स्रोत पैनल से कॉपी करें)

मार्कडाउन के संपादक को इस उत्तर के कुछ पात्र पसंद नहीं हैं: कुछ पात्र बचत करने में चूक जाते हैं। फिर भी, मुझे लगता है कि यह एक संपादक की समस्या है, मेरी नहीं। खोए हुए पात्र पूरी तरह से वैध 8 बिट यूनिकोड वर्ण हैं।
(या फिर मैं गलत हूं, अगर इस मुद्दे पर पहले से ही मेटा में बहस की गई थी, तो मुझे बताएं) यहां एक ऐसा संस्करण है जिसमें अपमानजनक चरित्र बच गए हैं, प्रत्येक क्रम \ xNN को गिनना चाहिए 1

alert(btoa("×C§{Dð£Dá­ç´\x16\x8b«ÐX¯{D¢ÇD\x9e½éô\x12(!·Cb\x9dí").split(0)[prompt()])

सरल परीक्षण

फ़ायरफ़ॉक्स कंसोल में:

[0,1,2,3,4,5,6,7,8,9]
.map(x=>x +',' btoa("×C§{Dð£Dá­ç´\x16\x8b«ÐX¯{D¢ÇD\x9e½éô\x12(!·Cb\x9dí").split(0)[x])

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

@nderscore, धिक्कार है आपका। पोस्ट में संशोधन, फिर भी यह मेरे अनुसार मान्य है
edc65

1
उस संस्करण के साथ जिसमें बच गए वर्ण हैं, सब कुछ काम करता है लेकिन 3 और 8, आउटपुट Treeऔर EightF
जस्टिन

3
@Quincunx 'ट्री' मुझसे अंग्रेजी नहीं बोलता
edc65

10

जावास्क्रिप्ट 73

alert('0one0two0three0four0five0six0seven0eight0nine'.split(0)[prompt()])

69

alert(btoa("ôéÞõ5õ1ëxO_¢êý|Þöȱõ'xß^hSôا{Ý").split(9)[prompt()])

तकनीकी alert('0one0two0three0four0five0six0seven0eight0nine'.split(0)[#])रूप से एक ही बात नहीं होगी लेकिन आपको 8 बाइट्स बचाएंगे? उपयोगकर्ता अभी भी उस नंबर को इनपुट करता है जो वे चाहते हैं ...
Eric Lagergren

@eric_lagergren क्या आपको लगता है कि उपयोगकर्ता को स्रोत में संख्या को बदलना होगा? मुझे नहीं लगता कि यह इनपुट के रूप में गिना जाएगा।
नदकोर

ओह, ठीक है, मैं देख रहा हूं कि आपका क्या मतलब है। मुझे लगता है कि अगर आप इसे कंसोल में एक कमांड की तरह चलाते हैं तो यह स्रोत के विपरीत इनपुट का हिस्सा होगा।
एरिक लेगरग्रेन ने

7

पर्ल, 55

$_=(nine,eight,seven,six,five,four,three,two,one)[-$_]

यह विकल्प -p(+1 बाइट) के साथ चलाया जाता है , जैसे:

perl -pe '$_=(nine,eight,seven,six,five,four,three,two,one)[-$_]'

इनपुट STDIN में अपेक्षित है और आउटपुट STDOUT को लिखा गया है।

कोड सिर्फ एक सरणी बनाता है और सही तत्व का चयन करता है। विकल्प -pइनपुट लाइन को पढ़ने में ध्यान रखता है $_और परिणाम को प्रिंट करता है $_

बदलाव:

  • अनुगामी नई पंक्ति (+3) के साथ:

    $_=(nine,eight,seven,six,five,four,three,two,one)[-$_].$/

    या (एक ही बाइट गिनती):

    s/./(nine,eight,seven,six,five,four,three,two,one)[-$&]/e

अपडेट करें:

  • के बजाय नंगे शब्दों का उपयोग करना qw[...](धन्यवाद जैद)।

  • नकारात्मक सूचकांक एक बाइट बचाता है (धन्यवाद आर्गेनर)।


1
पात्रों में से एक जोड़े को बचाओ:$_=(one,two,three,four,five,six,seven,eight,nine)[$_-1]
ज़ैद

2
@Zaid: धन्यवाद, इसने दो बाइट्स बचाए। (मुझे आदत है use strict)।
हेइको ओबर्डिएक

मुझे यह पसंद नहीं है "-1"। $_=(nine,eight,seven,six,five,four,three,two,one)[-$_]- एक वर्ण छोटा।
अर्ग

@रागैर: धन्यवाद, अच्छा विचार।
हेइको ओबर्डिएक

6

ओरेकल एसक्यूएल - 46

select to_char(to_date(&1,'j'),'jsp')from dual

प्रदर्शन

इसमें एक मानक खामी शामिल है , मैं मानता हूं, लेकिन एसक्यूएल गोल्फस्क्रिप्ट से छोटा है; मैं विरोध नहीं कर सका!

यह Oracle के डेटाटाइम प्रारूप मॉडल का उपयोग करके (ab) काम करता है । TO_DATE(n, 'j')एक संख्या को एक जूलियन दिवस में परिवर्तित करता है , 1 जनवरी, 4712 ईसा पूर्व के दिनों की संख्या। TO_CHAR(<date>, 'jsp')इसे वापस पूर्णांक में परिवर्तित करता है (हालांकि एक स्ट्रिंग के रूप में)। sp, एक है प्रारूप तत्व प्रत्यय उस नंबर मंत्र। यह वास्तव में काफी संख्या के साथ काम करेगा।

&1एक प्रतिस्थापन चर है कि केवल ग्राहकों है कि यह स्वीकार करते हैं, उदाहरण के लिए एसक्यूएल * प्लस के साथ काम करेंगे।


ओरेकल के आरडीबीएमएस के साथ मेरा प्रेम / घृणा संबंध है लेकिन यह अच्छा है।
रेने

6

CJam, 45 43 बाइट्स

"^AM-^L8M-xM-^L^US^_M-^WrM-rM- 1M-s^CHM-|M-X^HE,M-qM-^EM-q4"256bKb'ef+'j/li=

उपरोक्त वर्ण ^ और M- संकेतन का उपयोग करता है, क्योंकि कुछ अक्षर अनपेक्षित हैं।

9 और बाइट्स की कीमत पर, अप्राप्य पात्रों से बचा जा सकता है:

" one two three four five six seven eight nine"S/li=

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

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

" Convert the string into an integer by considering it a base-256 number.                ";

"^AM-^L8M-xM-^L^US^_M-^WrM-rM- 1M-s^CHM-|M-X^HE,M-qM-^EM-q4"256b

" Convert the integer from above into an array by considering it a base-20 number.       ";

Kb

" Add the ASCII character code of “e” to all elements of that array. This casts to char. ";

'ef+

" So far, we've pushed the string “jonejtwojthreejfourjfivejsixjsevenjeightjnine”.       ";

" Split the the above string where the character “j” occurs.                             ";

'j/

" Read an integer from STDIN and push the corresponding substring.                       ";

li=

उदाहरण

$ base64 -d > convert.cjam <<< IgGMOPiMFVMfl3LyoDHzA0j82AhFLPGF8TQiMjU2YktiJ2VmKydqL2xpPQ==
$ wc -c convert.cjam
43 convert.cjam
LANG=en_US cjam convert.cjam <<< 5
five

वाह, हमारे जवाब समान हैं, यहां तक ​​कि लंबाई में भी (मुझे लगता है कि उपयोगकर्ता इनपुट एक स्ट्रिंग है)।
जस्टिन

1
@Quincunx: एक जैसे दिमाग महान सोचते हैं! : P लेकिन यूजर इनपुट पढ़ने से CJam में दो बाइट्स खर्च होंगे, इसलिए मुझे कुछ और सोचना होगा ...
डेनिस

@Quincunx: इसे गोल्फस्क्रिप्ट के साथ भी काम करना चाहिए, हालांकि यह शायद बाइट्स को नहीं बचाएगा। बेस 64 डंप:IgGMOPiMFVMfl3LyoDHzA0j82AhFLPGF8TQiMjU2YmFzZSAyMGJhc2V7MTAxK30lIiIr
डेनिस

यह वही है जो मैं साथ आने में कामयाब रहा; यह अधिक लंबा है: golfscript.apphb.com/…
जस्टिन

क्या आप जानते हैं कि गैर-अस्सी पात्रों के लिए गोल्फ एन्कोडिंग क्या उम्मीद करती है? ऐसा लगता है कि यूटी -8 नहीं है
जस्टिन

5

गोल्फस्क्रिप्ट, 51 बाइट्स

~'
one
two
three
four
five
six
seven
eight
nine'n/=

यह एक साधारण लुकअप टेबल है। इनपुट का मूल्यांकन किया जाता है ( ~), मानों की एक सरणी बनाई जाती है, और सूचकांक पाया जाता है।

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


उपयोगकर्ता को एक स्ट्रिंग इनपुट करना चाहिए, आपके पास यह हार्ड-कोड नहीं हो सकता है। साथ ही, आपके Try it hereलिंक में पेस्ट किए गए कोड की तुलना में अलग कोड है।
जॉन

@Chipperyman उपयोगकर्ता इस कार्यक्रम में एक स्ट्रिंग इनपुट करता है। Try it hereकोड में लिंक का अंतर क्योंकि वेबपेज उपयोगकर्ता इनपुट का समर्थन नहीं करता है। के बाद स्ट्रिंग बदलें ;, यह उपयोगकर्ता इनपुट के समान है।
जस्टिन

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

2
@Chipperyman: GolfScript स्क्रिप्ट को निष्पादित करने से पहले स्टैक पर STDIN की सामग्री रखता है।
डेनिस

2
हा! मैं तुम्हें एक बाइट से हरा सकता हूं ! ;-)
इल्मरी करोनें

4

पर्ल, 60 बाइट्स

$_=(ZOneTwoThreeFourFiveSixSevenEightNine=~/.[a-z]*/g)[$_]

आवश्यक -pस्विच (दो बाइट्स)।

उदाहरण

$ perl -p convert.pl <<< 5
Five

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

  • -pSTDIN से पढ़ता है और परिणाम को बचाता है $_

  • =~/.[a-z]*/g एक (अपरकेस) पत्र के किसी भी संख्या में निचले स्तर के अक्षरों के पूर्ववर्ती नंगे भाग को विभाजित करता है।

  • (…) एक सरणी में सबस्ट्रिंग एकत्र करता है।

  • [$_] उपयोगकर्ता इनपुट के अनुरूप सबस्ट्रिंग को पुनः प्राप्त करता है।

  • $_=…में परिणाम बचाता है $_

  • -pके मूल्य को प्रिंट करता है $_


2
मुझे रेगेक्स ट्रिक पसंद है। +1
seequ

3

डॉस बैच - 162 चार्ट (झुकाव 'लाइन ब्रेक)

यह उत्तर @ grc के पायथन उत्तर से प्रेरित था, हालाँकि मेरे मन में कुछ ऐसा ही था।

@setlocal enabledelayedexpansion
@set s="ottffssennwhoiieiieoruvxvgn  ere ehe  e   nt
@set /a c=%1
@set z=!s:~%c%,1!
@if _%z%==_ exit /b
@echo %z%
@%0 %c%+9

उपयोग:

[फ़ाइल नाम] [संख्या]

उदाहरण के लिए, यदि कोड Speak.bat नामक फ़ाइल में है, और आप संख्या "पांच" देखना चाहते हैं, तो आप इसे पसंद करेंगे:

speak 5

इसके अलावा, आउटपुट ऊपर से नीचे है, बाएं से दाएं नहीं! इसलिए इसके बजाय

पांच

तुम देखोगे

f
i
v


3

बाश + कोरुटिल्स, 64

गैर-प्रतिस्पर्धी संपीड़न अवधारणा

xxd -p<<<TàPnàõ:àsÀ~®@ãCN|tr 0-9a-d \\ng-inor-x|sed -n $1p

कुछ विदेशी चरित्र यहाँ अच्छी तरह से प्रस्तुत नहीं हो सकते हैं, इसलिए इस स्क्रिप्ट को इसके बेस 64 प्रतिनिधित्व से फिर से बनाया जा सकता है:

base64 -d <<< eHhkIC1wPDw8VOCLUIJu4PWWDzrgc8B+rkDjEoBDTnx0ciAwLTlhLWQgXFxuZy1pbm9yLXh8c2VkIC1uICQxcA==

उदाहरण आउटपुट

$ ./n.sh 1
one
$ ./n.sh 9
nine
$ 

व्याख्या

यह मेरे लिए हुआ कि स्ट्रिंग one two three four five six seven eight nineमें केवल अक्षर efghinorstuvwxऔर एक अंतरिक्ष विभाजक होता है - कुल 15 वर्ण मान। इस प्रकार प्रत्येक वर्ण को संभावित रूप से 4 बिट या 2 वर्ण प्रति 1 बाइट में दर्शाया जा सकता है। हम एक बाइट के हेक्स प्रतिनिधित्व को प्रत्येक बाइट को दो हेक्स अंकों में विभाजित करने के लिए एक आसान तरीके के रूप में उपयोग कर सकते हैं। फिर हम हेक्स अंकों को उन अक्षरों में बदल सकते हैं, जिनका हमें उपयोग trया इसी तरह की आवश्यकता है । भाग्य यह होता है के रूप में, rstuvwxलगातार कर रहे हैं, तो के रूप में व्यक्त किया जा सकता r-xकरने के लिए tr। एन्कोडिंग को इस तरह व्यवस्थित किया जाता है eऔर जैसे-जैसे fछोड़ा जाता है, और यह कि शब्द लाइन-ब्रेक से अलग हो जाते हैं, इसलिए हम sedबस उस लाइन का उपयोग कर सकते हैं जिसकी हमें आवश्यकता है।

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


3

(शुद्ध) बाश, ६४

वैध इनपुट मानते हुए, इनपुट को इसके पहले तर्क के रूप में लेता है।

v=(o one two three four five six seven eight nine)
echo ${v[$1]}

एक सरणी बनाता है v, फिर इनपुट पर निर्दिष्ट तत्व तक पहुंचता है। चूंकि सरणियाँ शून्य-अनुक्रमित हैं, मुझे प्लेसहोल्डर के रूप में 0 वां तत्व जोड़ना पड़ा। वैकल्पिक रूप से (thnx @DennisWilliamson इस ओर इशारा करते हुए):

v=(one two three four five six seven eight nine)
echo ${v[$1-1]}

2
समान चरित्र गणना: v=(one two three four five six seven eight nine)औरecho ${v[$1-1]}
डेनिस विलियमसन

3

पायथन 2.x - 65 64

@Grc के उत्तर जितना अच्छा नहीं है, लेकिन निश्चित रूप से अधिक सुपाठ्य :-)

'one two three four five six seven eight nine'.split()[input()-1]

एक कम चार, @flornquake के लिए धन्यवाद

'nine eight seven six five four three two one'.split()[-input()]

यह एक अच्छा भी है। :-) यह काम करता हैं।
निकोलस बारबुल्स्को

3
आप इस तरह से एक चरित्र बचा सकते हैं:'nine eight seven six five four three two one'.split()[-input()]
flornquake

यह एक अच्छा है!
विलेम

3

जावा 7 - 185

class Num{
public static void main(String[] args) {
    System.out.print("ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE".split(",")[(new java.util.Scanner(System.in)).nextInt()-1]);
    }}

3

C 111

#include <stdio.h>
int main(){printf("%.5s","one  two  threefour five six  seveneightnine"+5*(getchar()-'1'));}

लंबाई यहां ध्यान से इंजीनियर है तो मैं द्विआधारी और परिवर्तित रूप में यह व्याख्या कर सकते हैं कि दशमलव करने के लिए। केवल 7 पात्रों पर, मुझे विश्वास है कि मेरे पास एक विजेता है!


1
+1 कोड-गोल्फर्स आमतौर पर बुरा नहीं मानते हैं जब तक कि आपका सी कोड चेतावनी के साथ संकलित नहीं करता है , जब तक कि यह ऐनक पूरा नहीं करता है। तो आप #includeऔर main()वापसी प्रकार को छोड़ सकते हैं । आपकी अभिव्यक्ति का थोड़ा सा खंडन भी main(){printf("%.5s","one two threefour five six seveneightnine"+5*getchar()-245);}:। मेरी गिनती से 86 चार्ट।
डिजिटल ट्रामा

मुझे लंबाई की सामग्री नहीं मिली है, और मुझे नहीं लगता कि 7 चार्ट कहां होंगे।
निकोलस बारबुल्स्को

@ निकोलस बार्बुल्स्को: यह 111 अक्षर है - लेकिन अगर हम 111बाइनरी के रूप में व्यवहार करते हैं , तो यह 7दशमलव में परिवर्तित हो जाएगा ।
जेरी कॉफ़िन

जेरी, आपके सिर में कोड गोल्फ चल रहा है!
निकोलस बारबुलेसको

3

बैश कहते हैं (ओएस एक्स): 3 8

"आपका लक्ष्य एक पूरी संख्या को 1-9 के बीच उस शब्द में बदलना है जो इसे दर्शाता है"

पिछली बार जब मैंने जाँच की थी, बोले गए शब्द भी शब्द हैं। पिछला प्रयास (कोई इनपुट स्वीकार नहीं करता है)

say 4

संपादित करें, इनपुट पढ़ने में सक्षम होना चाहिए:

say|read

किसी भी संख्या को टाइप करें और शब्द बाहर आता है। मुझे पता है कि अंतिम तिथि नियत है, लेकिन मेरी राय में मुझे प्रतियोगिता जीतनी चाहिए थी।

उदाहरण ऑडियो फ़ाइल: चार


5 नहीं होना चाहिए?
rpax

@ मुझे विश्वास नहीं होता कि इनपुट को एक चरित्र के रूप में गिना जाता है, क्या यह है?
कज़िन कोकीन 12

1
यह चतुर है। लेकिन इससे इनपुट छूट जाता है।
निकोलस बारबुल्स्को

1
दुर्भाग्य से यह एक मान्य उत्तर नहीं है क्योंकि: यह उपयोगकर्ता से इनपुट को कभी स्वीकार नहीं करता है और यह केवल तभी काम करता है जब संख्या 4. है
जॉन

1
CousinCocaine के इस जवाब पर Chipperyman की टिप्पणी सत्य है। लेकिन यह @RegisteredUser के उत्तर के लिए भी सही है। हालाँकि, चिसप्रीमैन ने CousinCocaine के इस उत्तर को अस्वीकार कर दिया है, और पंजीकृत उपयोगकर्ता विजेता ex .quo द्वारा उत्तर की घोषणा की है। इसके अलावा, पंजीकृत उपयोगकर्ता द्वारा उत्तर CousinCocaine द्वारा इस उत्तर की प्रतिकृति है। यह अनुचित से अधिक है।
निकोलस बारबुल्स्को

2

वीबीएसस्क्रिप्ट 98 80 75

msgbox split(" one two three four five six seven eight nine")(inputbox(""))

2

जे - 68 या 60 57 या 53 बाइट्स

इंटरएक्टिव संस्करण (स्टडिन):

>one`two`three`four`five`six`seven`eight`nine{~<:".1!:1]1

फ़ंक्शन संस्करण:

f=:one`two`three`four`five`six`seven`eight`nine>@{~<:

स्पष्टीकरण:

f=:one`two`three`four`five`six`seven`eight`nine>@{~<:
                                                   <: Decrease by one
                                                 {~   Get the correct string
                                               >@     Unbox

".(1!:1)1 एक स्ट्रिंग पढ़ता है और इसे पूर्णांक में परिवर्तित करता है


आप इसे ट्रेन के रूप में लिखकर एक char को बचा सकते हैं ( (;:'one two blah')>@{~<:) और दूसरा छह one`two`blahबजाय gerund का उपयोग करके ;:
एल्गोरिद्मशार्क

@algorithmshark धन्यवाद! मैं अभी भी जे। सीख रहा हूं। हालांकि, ट्रेन संस्करण को पाठ को अनंत रैंक की आवश्यकता नहीं होगी (संपादित करें: जाहिरा तौर पर नहीं ... क्यों नहीं?) और अतिरिक्त संस्करण gerund संस्करण (संपादित करें: ओह, यह एक सूची बनाता है) बक्से)?
देखिए

एक कांटे में बाएं तर्क में एक संज्ञा हो सकती है, जो कि अनंत श्रेणी वाले उस संज्ञा को उत्पन्न करने वाली एक निरंतर क्रिया के लिए आशुलिपि है (qv the Dictionary )। और नहीं, gerund पर कोई अतिरिक्त उद्धरण नहीं: अपरिभाषित नामों को क्रियाओं के संदर्भ के रूप में माना जाता है, और उसके लिए gerund केवल एक बॉक्सिंग स्ट्रिंग है, जिसमें नाम शामिल है।
एल्गोरिथमशार्क

इसके अलावा, आपको STDIN संस्करण को क्रिया अभिव्यक्ति के रूप में लिखने की ज़रूरत नहीं है: >one`two`three`four`five`six`seven`eight`nine{~<:".1!:1]13 चार्ट छोटा है।
एल्गोरिथमशार्क

1
@ अल्गोरिद्मशर्क हाहा, मैंने ऐसा क्यों नहीं किया?
देखिए

2

पर्ल 36 (58 स्टैंडअलोन)

use Number::Spell;say spell_number<>

या, अतिरिक्त मॉड्यूल के बिना:

say qw(one two three four five six seven eight nine)[<>-1]

आपकी पहली स्क्रिप्ट मेरे मैक पर काम नहीं करती है। Can't locate Number/Spell.pm in @INC (@INC contains: /Library/Perl/5.16/darwin-thread-multi-2level /Library/Perl/5.16 /Network/Library/Perl/5.16/darwin-thread-multi-2level /Network/Library/Perl/5.16 /Library/Perl/Updates/5.16.2 /System/Library/Perl/5.16/darwin-thread-multi-2level /System/Library/Perl/5.16 /System/Library/Perl/Extras/5.16/darwin-thread-multi-2level /System/Library/Perl/Extras/5.16 .) at toto.pl line 1. BEGIN failed--compilation aborted at toto.pl line 1.
निकोलस बारबुल्स्को

आपकी दूसरी स्क्रिप्ट मेरे मैक पर काम नहीं करती है। syntax error at titi.pl line 1, near "say qw(one two three four five six seven eight nine)" Execution of titi.pl aborted due to compilation errors.
निकोलस बारबुल्स्को

2

AppleScript में; 123 वर्ण।

{"one","two","three","four","five","six","seven","eight","nine"}'s item((display dialog""default answer"")'s text returned)

यह स्क्रिप्ट एक संवाद में इनपुट लेती है। तब यह AppleScript के परिणाम में आउटपुट देता है  ।

उदाहरण :

  • इनपुट: 6
  • आउटपुट: "six"

यहाँ एक अच्छा संस्करण है:

set l to {"one","two","three","four","five","six","seven","eight","nine"}
set n to text returned of (display dialog "?" default answer "")
display dialog (l's item n) buttons ("OK") default button 1

यह संस्करण एक अच्छे संवाद में आउटपुट प्रदर्शित करता है।

उदाहरण :

  • इनपुट: 9
  • आउटपुट: nine

[उत्तर संपादित; इनपुट के लिए संवाद में थोड़ा सुधार; अभी भी 124 वर्ण। उत्तर फिर से संपादित; अब 1 चार कम! ]


1
set n to text returned of... वाह।
देखिए

2

पॉवर्सशेल - 91 74

[Enum]::ToObject([System.DirectoryServices.ActiveDirectory.HourOfDay],[Console]::Read()-48)

पता चला कि Enum और ToObject कॉल निकालने के लिए कैसे कास्ट करें:

[System.DirectoryServices.ActiveDirectory.HourOfDay]([Console]::Read()-48)

यह कैसे काम करता है?

ऑवरऑफडे एक एनुम प्रकार है, इसलिए हम जादू स्थिरांक के बजाय नामों का उपयोग कर सकते हैं। Enum प्रकारों में एक ToString () कार्यान्वयन होता है जो आपको निरंतर मूल्य का नाम देता है। आप एक एनुम के लिए एक इंट कास्ट कर सकते हैं। Console.Read () इनपुट स्ट्रीम से एक वर्ण को पूर्णांक के रूप में दर्शाया गया है। टाइपिंग '1' 49 देता है, 48 में से 1 प्राप्त करें, 'वन' को वापस करने के लिए ऑवरऑफडे को कास्ट करें।

क्योंकि शक्तियां आउटपुट स्ट्रीम पर लिखी जा रही सभी वस्तुओं पर एक ToString करती है और इसे एक निष्पादन योग्य में बदलने की आवश्यकता नहीं होती है, जो शक्तियां के अलावा आवश्यक है ...


2

CJam - 50

यह एक सादा ASCII समाधान है जो HTTP अनुरोधों का उपयोग करता है (यह प्रश्न में अनुमति है):

"aj21.com/"r+g

सर्वर पर 1, 2, ..., 9 नाम की 9 प्लेन-टेक्स्ट फाइलें हैं, जिनमें से प्रत्येक में संबंधित शब्द है।

कुल आकार: १४ + ३ ("एक") + ३ ("दो") + ५ + ४ + ४ + ३ + ५ + ५ + ४ = ५०।
यह एक छोटे से डोमेन का उपयोग करके अधिक गोल्फ हो सकता है।

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


1
कृपया एक टिप्पणी जोड़ें अगर डाउनवोटिंग।
aditsu


3
@ nyuszika7h यह विशेष रूप से इस प्रश्न में अनुमति दी गई है
aditsu

1
क्षमा करें, मुझे वह याद आया। जब तक जवाब संपादित नहीं किया जाता मैं अपना अपमान नहीं मिटा सकता।
नौसिखिया

1
@ nyuszika7h संपादित
एडिट्स

2

बैच - 86

दूसरे बैच के उत्तर की तुलना में बहुत कम, और वास्तव में आश्चर्यजनक रूप से प्रतिस्पर्धी।

for /f "tokens=%1" %%1 in ("one two three four five six seven eight nine") do echo>%%1

के रूप में उपयोग किया जाता है filename.bat number, और आउटपुट सही संख्या के नाम के साथ फाइल के रूप में होता है।


2

रूबी 64

p %w?one two three four five six seven eight nine?[$*[0].to_i-1]

1
आप x की जगह पर सीधे 9 को प्रतिस्थापित करके कुछ और बाइट्स काट सकते हैं
श्री एलियन

6
मुझे नहीं लगता कि यह कोड इनपुट में कहां है। और क्यों लिखें 9-1जब आप बस कह सकते हैं 8? बेशक दोनों 9-1और 8गलत कर रहे हैं; यह स्क्रिप्ट हर समय "नौ" आउटपुट करती है और इनपुट को अनदेखा करती है।
रे तोल

2

बाश ९

चचेरे भाई के जवाब के बेशर्म लिनक्स-प्रतिकृति

spd-say 1

एक बोलता है


1
यदि इनपुट 1 था तो क्या यह केवल काम नहीं करेगा?
जॉन

1
@Chipperyman यह किसी भी संख्या के लिए काम करता है
पंजीकृत उपयोगकर्ता

मर्यादा, लेकिन चतुर!
निकोलस बारबुल्स्को

इससे इनपुट छूट जाता है।
निकोलस बारबुल्स्को

@nicolasbarbulesco हाँ। लेकिन कई अन्य जवाब थे जो इनपुट याद करते हैं, इसलिए मैं इसके साथ आगे बढ़ा।
पंजीकृत उपयोगकर्ता

2

GolfScript, 50 बाइट्स

मैं यह देखना चाहता था कि क्या मैं क्विनक्सक्स के 51-बाइट सेल्फ-गॉल्फ़स्क्रिप्ट समाधान को हरा सकता हूं । पर्याप्त चाल के साथ, हां, मैं कर सकता हूं - एक बाइट द्वारा।

चूंकि मैं जिन ट्रिक्स का उपयोग कर रहा हूं उनमें से एक मुद्रण योग्य ASCII रेंज के बाहर बाइट्स का उपयोग है, जिसके परिणामस्वरूप प्रोग्राम को सीधे यहां पेस्ट नहीं किया जा सकता है। इसके बजाय, मैं इसका एक हेक्स डंप प्रदान कर रहा हूं; यूनिक्स सिस्टम पर उपयोगकर्ता xxd -rहेक्स डंप से वास्तविक 50-बाइट गोल्फस्क्रिप्ट प्रोग्राम को फिर से संगठित करने के लिए उपयोग कर सकते हैं :

0000000: 7e6e 270b 97eb 442f e166 9894 9f00 c63c  ~n'...D/.f.....<
0000010: 8128 73a3 9b55 5065 a9fb f06a 2727 ff16  .(s..UPe...j''..
0000020: 277b 6261 7365 7d2f 2b6e 2f3d 7b39 392b  '{base}/+n/={99+
0000030: 7d25                                     }%

इस प्रोग्राम को जनरेट करने के लिए उपयोग की जाने वाली मूल ट्रिक सरल है: मैं लंबे स्ट्रिंग स्ट्रिंग शाब्दिक को संपीड़ित करता हूं जो कि cचरित्र मानों से 99 (अक्षर का एएससीआईआई कोड ) को घटाकर क्विनकुंक्स कोड बनाता है , जिसके परिणामस्वरूप मानों की संख्या 22 में संख्या के रूप में होती है। (पर्याप्त अक्षरों को सांकेतिक शब्दों में बदलना x) और फिर आधार संख्या को फिर से सांकेतिक शब्दों में बदलने के लिए आधार 255 में फिर से एनकोड करें जो कि मेरे प्रोग्राम के पहले आधे हिस्से को बनाता है। इस कार्यक्रम का बाकी हिस्सा इस प्रक्रिया को उलट देता है, स्ट्रिंग को कुछ मुद्रण योग्य में वापस डिकोड करता है।

(चूंकि सबसे कम अक्षर वास्तव में संख्या नामों में मौजूद है e, इसलिए मैंने ASCII कोड से 101 घटाकर और आधार 20 का उपयोग करके बाइट स्ट्रिंग को और छोटा कर दिया है। हालांकि, 101 को घटाकर पत्र oको एक नई रेखा पर मैप किया जाएगा , जिसे मैंने कहा था। संख्या nपरिसीमाक के रूप में उपयोग कर रहा हूँ क्योंकि यह आसानी से उपलब्ध है गोल्फ की तरह निर्मित में । यह चारों ओर काम कर मुझे एक बाइट से अधिक खर्च होता है कि एक कम आधार का उपयोग कर बचत होगी। ऑफसेट 99 का उपयोग कर पत्र के अनुरूप newline छोड़ देता है। m, जो आसानी से संख्या नामों से अनुपस्थित है।)

यहाँ कार्यक्रम का एक डी-गोल्फ संस्करण है:

~       # eval the input, turning it into a number
n       # push a newline onto the stack; we'll need it later

# this is the byte string encoding the number names:
"\x0B\x97\xEBD/\xE1f\x98\x94\x9F\x00\xC6<\x81(s\xA3\x9BUPe\xA9\xFB\xF0j"

# convert the encoded string from base 255 to base 22
# (and, incidentally, from a string to an array):
"\xFF\x16" {base}/

+       # prepend the newline pushed earlier to the array, re-stringifying it
n/      # split the resulting string at newlines
=       # pick the substring corresponding to the input number
{99+}%  # add 99 to the character values in the chosen substring
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.