मुझे एक कुकी कोड


16

चुनौती

इनपुट के अनुसार एक तरह का ASCII कुकी कोड करें।

इनपुट

  • कुकी प्रकार। यह तीन स्ट्रिंग्स में से एक है: "प्लेन", "चॉकलेट", या "नट्स"। फ़ंक्शन तर्क, स्टडिन (या निकटतम समतुल्य), या फ़ाइल तर्क हो सकते हैं।

उत्पादन

  • एक ASCII कुकी। निचे देखो।

होना चाहिए

     ___
    /   \
    |   |
    \___/

सादा इनपुट के लिए,

     ___
    /. .\
    | . |
    \___/

चॉकलेट इनपुट के लिए, और अंत में

     ___
    /^  \
    |^ ^|
    \___/

नट इनपुट के लिए।

अन्य सूचना

  • यह मेरी पहली चुनौती है, यह जितना आसान हो सकता है। रचनात्मक प्रतिक्रिया की बहुत सराहना की जाती है।
  • ऐसा करने के लिए किसी भी साधन का उपयोग करें।
  • ट्रेलिंग स्पेस ठीक हैं।
  • यह एक कोड गोल्फ चुनौती है, 9 दिनों (बुधवार, 12 अगस्त 2015) के अंत में सबसे छोटी प्रविष्टि जीतती है।

धन्यवाद!

विजेता 41 बाइट के साथ पाइथ का उपयोग करते हुए जकुबे है। जिन्होंने भाग लिया उन सबका धन्यवाद। मैं अब और अधिक जटिल चुनौतियों के साथ खुद को काम करूंगा।


7
यह अच्छा है, लेकिन यह जितना आसान है। यह प्रत्येक प्रकार के कुकीज़ के व्यास या मात्रा के लिए उपयोगकर्ता इनपुट की आवश्यकता के द्वारा बड़े पैमाने पर सुधार किया जा सकता है। क्या चॉकलेट चिप्स और नट्स को उदाहरण के अनुसार स्थान पर होना चाहिए? (चर व्यास के साथ, वे शायद यादृच्छिक हो सकते हैं।) उन्होंने कहा, यह पोस्ट करने के बाद चुनौती को बदलने के लिए बुरा रूप है। मैं आपको सुझाव देता हूं कि आप इसे 1. या तो छोड़ दें, या 2. इसे हटा दें, इसके बारे में थोड़ा और सोचें और / या इसे meta.codegolf.stackexchange.com/q/2140/15599 पर पोस्ट करें और बाद में रीपोस्ट करें
लेवल रिवर सेंट 23

1
एकाधिक टॉपिंग की अनुमति देने से इसे और अधिक रोचक बनाने का एक और तरीका हो सकता है। फिर, सरल दिखने वाली चुनौतियों में अक्सर बहुत अधिक भागीदारी होती है। BTW, दो कुकीज़ के नमूने के उत्पादन में सफेद स्थान है। शायद यह जानबूझकर नहीं है?
रेटो कोराडी

1
मैंने इंडेंट को रद्द करने के लिए एक मामूली संपादन किया, इसलिए सभी कुकीज़ में एक ही प्रमुख व्हाट्सएप है। मुझे लगता है कि चार प्रमुख स्थान एक प्रारूपण मुद्दा है और इसकी आवश्यकता नहीं है? आपको यह निर्दिष्ट करना चाहिए कि प्रमुख / अनुगामी नई सूचियों की अनुमति है या नहीं। मैं एक वैकल्पिक अनुगामी न्यूलाइन की अनुमति देने के अपवाद के साथ, अनावश्यक व्हाट्सएप को अस्वीकार करने का सुझाव दूंगा।
स्तर नदी सेंट

1
क्या कार्यों की अनुमति होगी?
मेयरमोनी

1
@Steveverrill मेरी आँखें खोलने के बाद , यह सिर्फ एक सरलीकृत संस्करण लगता है क्या आप एक स्नोमैन को कोड करना चाहते हैं? । उल्लिखित चर व्यास की तरह कुछ और आवश्यकताएं, वास्तव में इसमें सुधार करेंगी।
मैनटवर्क

जवाबों:


4

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

X" ___
/d a\\
|cac|
\___/"G.>"^X .  .^"Cz

इसे ऑनलाइन आज़माएं: नियमित इनपुट / टेस्ट सूट

स्पष्टीकरण:

 "..."                      template string
X     G                     replace "a..z" in ^ with:
                   Cz         convert z to an integer (base 256 of ord(char))
       .>"^X .  .^"           rotate "^X .  .^"
                              ["Plain"     -> " .  .^^X", 
                               "Chocolate" -> ".  .^^X ", 
                               "Nuts"      -> " .^^X . "]

7

रूबी, 73

->s{' ___
/'+['^  \
|^ ^','. .\
| . ','   \
|   '][s[0].ord%3]+'|
\___/'}

यह एक अनाम मेमने का कार्य है। यहाँ यह एक परीक्षण कार्यक्रम में है:

g=->s{' ___
/'+['^  \
|^ ^','. .\
| . ','   \
|   '][s[0].ord%3]+'|
\___/'}

puts g.call(gets)

यह सिर्फ कुकी प्रकार के पहले अक्षर (अपरकेस में) का उपयोग करता है और सीमा में सूचकांक प्राप्त करने के लिए इसे modulo 3 लेता है 0..2। फिर यह कुकी का प्रतिनिधित्व करने वाले स्ट्रिंग को सही स्थानों पर एम्बेडेड उपयुक्त तार के साथ वापस करता है।


आपको क्या लगता है कि ordविधि क्या कर सकती है यदि आप इसे पूरी स्ट्रिंग के लिए कहते हैं? मेरा पहला विचार स्वरूपण था:->s{" ___\n/%1$s \\\n|%1$s %1$s|\n\\___/"%'^. '[s.ord%3]}
manatwork

रहने भी दो। एक बार फिर trछोटा साबित हुआ:->s{' ___↵/% \↵|% %|↵\___/'.tr ?%,'^. '[s.ord%3]}
manatwork

@manatwork आपके सुझाव के लिए धन्यवाद। मैं चूक गया s[0] --> s, यह कोशिश करने के लिए मेरे साथ कभी नहीं हुआ। चॉकलेट केस के लिए आपका कोड सही जवाब नहीं देता है, क्योंकि चॉकलेट चिप्स नट्स की तुलना में अलग-अलग जगहों पर होते हैं। फिर भी वहां कुछ उपयोगी विचार हैं, मैं उन्हें बाद में देखूंगा। मैंने पहले trया उपयोग नहीं किया है %
लेवल रिवर सेंट 10

उफ़। तुम सही हो। यह एक त्वरित कोशिश ईसा पूर्व (कॉफी से पहले) थी। चिप्स प्लेसमेंट अंतर को नोटिस करने के लिए बहुत जल्दी। :( (BTW, "%" का trसिंटैक्स से कोई लेना-देना नहीं है । सिर्फ कुकी ही नहीं एक ऐसी कला है जिसे मैंने प्लेसहोल्डर के रूप में इस्तेमाल किया है।)
मैनटवर्क

4

पायथन 2.7.6, 99 बाइट्स

def c(t):n=hash(t)%3;return" ___\n/"+" ^."[n]+" "+"  ."[n]+"\\\n|"+[" ","^ ^"," . "][n]+"|\n\\___/"

यह एल्गोरिथ्म इस तथ्य पर निर्भर करता है कि hash(cookie)%30 कब cookie = "Plain", 1 कब cookie = "Nutऔर 2 कब देता है cookie = "Chocolate। अगर किसी को इस कोड को कम करने का तरीका पता है, तो कृपया मुझे टिप्पणियों में बताएं।



"ऐसा करने के लिए किसी भी साधन का उपयोग करें।" हां, वैकल्पिक तर्कों की अनुमति है।
The_Basset_Hound

ठीक है, लेकिन मुझे लगता है कि मैं अभी भी पहले वाले के साथ रहूंगा और दूसरे को छोड़ दूंगा।
लोवजो

@ BetaDecay मुझे नहीं लगता कि वैकल्पिक तर्क वास्तव में कोड-गोल्फ की भावना में हैं। मैं वास्तव में नहीं जानता कि क्यों, मुझे लगता है कि इसे अनुमति नहीं दी जानी चाहिए। अब जब वे दोनों समान लंबाई के हैं, तो मैंने वैकल्पिक-तर्क संस्करण को हटा दिया।
19

3
@ लोजोवो अजीब और असामान्य तरीकों का उपयोग करते हुए कोड गोल्फ की पूरी भावना है :)
बीटा

3

C: 122

q(char *p){char *t,*m;int i=*p%3;t=i?i%2?". .":"   ":"^  ";m=i?i%2?" . ":"   ":"^ ^";printf(" ___\n/%s\\ \n|%s|\n\\___/",t,m);}

गोल्फ खत्म करने के बाद स्पष्टीकरण।

उपयोग का उदाहरण:

 int main(void){
 q("Plain");
 printf("\n");
 q("Nut");
 printf("\n"); 
 q("Chocolate");
 }

3

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

" ___
/""^  ^ ^. . ."S7*+6/rci=3/"\
|"*"|
\___/"

CJam दुभाषिया में इसे ऑनलाइन आज़माएं ।

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

" ___
/"

e# Push that string.

"^  ^ ^. . ."S7*+6/

e# Push that string, append 7 spaces and split into chunks of length 6.
e# This pushes ["^  ^ ^" ". . . " "      "].

rci

e# Read from STDIN, cast to character, then to integer.
e# "Plain", "Chocolate", "Nuts" -> 'P', 'C', 'N' -> 80, 67, 78

=

e# Select the corresponding element from the array.
e# Arrays wrap around in CJam, so for an array A of length 3,
e# A80= is A2=, A67= is A1= and A78= is A0=.

3/

e# Split into chunks of length 3.

"\
|"*

e# Join those chunks, using that string as separator.

"|
\___/"

e# Push that string.

अंत में, सीजेएम स्वचालित रूप से स्टैक पर सभी तत्वों को प्रिंट करता है।


3

जावास्क्रिप्ट (ईएस 6), 90

s=>" ___\n/"+(s.length-4?s.length-5?". .\\\n| . ":"   \\\n|   ":"^  \\\n|^ ^")+"|\n\\___/"

यह एक गुमनाम एरो फंक्शन है। यह इनपुट की लंबाई निर्धारित करता है कि किस कुकी को खींचना है।

स्पष्टीकरण:

s=>
 " ___\n/" +               //build the first part of the cookie

 (s.length - 4 ?           //if the length is 4, this condition will evaluate to 0, which coerces to false. Otherwise it is true

      s.length - 5 ?            //if the length is 5, this evaluates to false; otherwise true

           ". .\\\n| . " :      //build the unique part of the Chocolate cookie, if length was not 5
           "   \\\n|   "        //build the unique part of the Plain cookie, if length was 5

      : "^  \\\n|^ ^"      //build the unique part of the Nuts cookie, if length was 4
 )

 + "|\n\\___/"             //build the last part of the cookie, and implicitly return the built string

परीक्षा करना:

f=s=>" ___\n/"+(s.length-4?s.length-5?". .\\\n| . ":"   \\\n|   ":"^  \\\n|^ ^")+"|\n\\___/"

console.log(f("Nuts"))
console.log(f("Plain"))
console.log(f("Chocolate"))

3

BrainFuck, 481 447 436 बाइट्स

क्यों नहीं BrainFuck?, कार्यक्रम शायद अधिक गोल्फ हो सकता है, लेकिन मुझे लगता है कि यह बहुत साफ है।

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

3

सी # इंडेंटेशन और लाइन ब्रेक के साथ

using System;
class Cookie
{
    static void Main()
    {
      String E="",N="",C=Console.ReadLine();
      if(C=="P"){E="   ";N="   ";}
      if(C=="C"){E=". .";N=" . ";}
      if(C=="N"){E="^  ";N="^ ^";}
      Console.Write(" ___ \n/" + E + "\\ \n|" + N + "|\n\\___/");
    }
}

गोल्फ (225 वर्ण)

using System;class X{static void Main(){String E="",N="",C=Console.ReadLine();if(C=="P"){E="   ";N="   ";}if(C=="C"){E=". .";N=" . ";}if(C=="N"){E="^  ";N="^ ^";}Console.Write(" ___ \n/" + E + "\\ \n|" + N + "|\n\\___/");}}[![enter image description here][1]][1]

1
क्यों नहीं String C= Console.ReadLine(),E=... आदि?
rpax

अरे @rax, आपकी टिप्पणी ने मुझे 2 पात्रों को ट्रिम करने में मदद की। धन्यवाद।
मेरिन नाकामरी

2

सी # 6, 105 बाइट्स

बहुत करीब से इस उप -100 बाइट्स को मिला, कोई विचार नहीं है कि पिछले कुछ बाइट्स को कहां से निचोड़ना है: सी

string C(string t)=>$" ___\n/{(t[0]=='C'?". .\\\n| . ":t[0]=='N'?"^  \\\n|^ ^":"   \\\n|   ")}|\n\\___/";

2

पायथ, 58 54 53 52 50 बाइट्स

+d*\_3p+\/j"\\
|"c@["^  ^ ^"*". "3*d6)Chz3\|"\___/

मुझे नहीं लगता कि यह अधिक गोल्फ हो सकता है। मैं वास्तव में 50 बाइट्स के तहत इसे निचोड़ने की कोशिश कर रहा था


एक त्वरित और आसान है". . . " -> *". "3
Sp3000

यदि आपकी दिलचस्पी है, तो मुझे 42 बाइट्स में ऐसा करने का एक अच्छा तरीका मिला ।
जकुबे

2

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

के रूप में सरल के रूप में यह हो जाता है ... नई लाइनों को 1 बाइट के रूप में गिना जाता है।

f=s=>` ___
/${s[4]?s[5]?`. .\\
| . `:`   \\
|   `:`^  \\
|^ ^`}|
\\___/`

डेमो

जैसा कि ईएस 6 है, यह डेमो केवल अब के लिए फ़ायरफ़ॉक्स और सफारी में काम करता है।

f=s=>` ___
/${s[4]?s[5]?`. .\\
| . `:`   \\
|   `:`^  \\
|^ ^`}|
\\___/`

// Snippet stuff

A.innerHTML = f("Nuts");
B.innerHTML = f("Plain");
C.innerHTML = f("Chocolate");
<p>Nuts</p>
<pre id=A></pre>

<p>Plain</p>
<pre id=B></pre>

<p>Chocolate</p>
<pre id=C></pre>


2

कमोडोर 64 बेसिक, 181 बाइट्स

10 INPUT A$
20 IF A$="PLAIN" THEN B$="/   \":C$="|   |"
30 IF A$="CHOCOLATE" THEN B$="/. .\":C$="| . |"
40 IF A$="NUTS" THEN C$="/^  \":C$="|^ ^|"
50 PRINT" ___":PRINT B$:PRINT C$:PRINT"\___/"

टिप्पणियाँ:

बैकलैश \के बजाय SHIFT-M अक्षर का उपयोग किया गया है, स्लैश के लिए /- SHIFT-N और पाइप के लिए |- SHIFT-T। SHIFT-Z (कार्ड डायमंड साइन) के लिए इस्तेमाल किया गया था ^। वास्तव में चरित्र मायने नहीं रखते क्योंकि वे सभी एक-एक बाइट पर कब्जा कर लेते हैं।

क्योंकि C64 पर प्रत्येक कमांड (PRINT, INPUT, THEN, आदि) मेमोरी में 2 बाइट्स (या कुछ एक, IIRC) लेता है, बेसिक भाषा कोशिश कर रहा था (हालांकि, मुझे उम्मीद से अधिक बाइट्स लगे)।

कार्यक्रम का आकार (38909 बाइट्स) टाइप करने से पहले मुफ्त मेमोरी को मापकर और उसके बाद (38728 बाइट्स), PRINT FRE(0)+65536कमांड का उपयोग करके , 181 बाइट्स का अंतर देकर कार्यक्रम आकार की गणना की गई ।

इस टूल से तैयार किए गए कोड का परीक्षण और स्क्रीनशॉट: http://codeazur.com.br/stuff/fc64_final/ (GPL)।

स्क्रीनशॉट:

C64 स्क्रीनशॉट 1

C64 स्क्रीनशॉट 2


2

लुआ 5.3, 113 बाइट्स 112 बाइट्स

c=io.read()print(' ___\n/'..(c=='plain'and'   \\\n|   'or c=='nut'and'^  \\\n|^ ^'or'. .\\\n| . ')..'|\n\\___/')

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


2

जावा 258 217 अक्षर / बाइट्स


golfed

class C{public static void main(String[] a){p(" ___");if(a[0].equals("Chocolate")) {p("/. .\\");p("| . |");}if(a[0].equals("Nut")){p("/^  \\");p("|^ ^|");}p("\\___/");}static void p(String s) {System.out.println(s);}}

मूल

class C {
    public static void main(String[] a) {
        p(" ___");
        if(a[0].equals("Chocolate")) {
            p("/. .\\");
            p("| . |");
        }
        if(a[0].equals("Nut")){
            p("/^  \\");
            p("|^ ^|");
        }
        p("\\___/");
    }
    static void p(String s) {
        System.out.println(s);
    }
}

1

LUA 270 अक्षर 270 बाइट्स

    c = io.read()
    if c == "plain" then
    print" ___"
    print"/   \\"
    print"|   |"
    print"\\___/"
    io.read()
    elseif c == "chocolate" then
    print" ___"
    print"/. .\\"
    print"| . |"
    print"\\___/"
    io.read()
    elseif c == "nut" then
    print" ___"
    print"/^  \\"
    print"|^ ^|"
    print"\\___/"
    end

किसी भी चुनौती का यह मेरा दूसरा जवाब है
एलेक्स एलन

"आप किस प्रकार की कुकी चाहते हैं" को बाहर निकाला जा सकता है, इसकी आवश्यकता नहीं है। वह 39 बाइट्स वहीं निकालता है।
The_Basset_Hound

यह एक कोड-गोल्फ चुनौती है। अपने कोड को थोड़ा छोटा करने की कोशिश करें। उदाहरण के लिए, आपको प्रारंभिक प्रिंट की आवश्यकता नहीं cookieहै c, io.read()
इफ्स के दौरान व्हाट्सएप

@ बेसेटहाउंड ने प्रिंट स्टेटमेंट
एलेक्स एलन

@ जकुब ने कुकी को छोटा कर दिया
एलेक्स एलन

1

LOLCODE 265 वर्ण

HAI
I HAS A T
GIMMEH T
VISIBLE " ___"
BOTH SAEM T AN "Chocolate", O RLY?
YA RLY
VISIBLE "/. .\"
VISIBLE "| . |"
OIC
BOTH SAEM T AN "Nut", O RLY?
YA RLY
VISIBLE "/^ ^\"
VISIBLE "|^  |"
OIC
BOTH SAEM T AN "Plain", O RLY?
YA RLY
VISIBLE "/   \"
VISIBLE "|   |"
OIC
VISIBLE "\___/"
KTHXBYE

Run

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