स्क्विग्ली सीक्वेंस


29

इस चुनौती के साथ आने का श्रेय अदनान को जाता है।

मेरी आखिरी चुनौती, इससे पहले कि मैं ब्रेक पर जाऊं

कार्य

सकारात्मक पूर्णांक को देखते हुए n, यदि nविषम है , तो /कई बार दोहराएं ; यदि nहै, तो भी \कई बार दोहराएं ।

(गंभीरता से, वृषण इस विवरण की तुलना में बहुत स्पष्ट होगा, इसलिए केवल वृषण को देखें।)

चश्मा

परीक्षण के मामलों

n output
1 /
2 \\
3 ///
4 \\\\
5 /////
6 \\\\\\

जवाबों:


17

जावास्क्रिप्ट, 22 बाइट्स

n=>"\\/"[n%2].repeat(n)

एक अनाम फ़ंक्शन को परिभाषित करता है।

यदि केवल *जावास्क्रिप्ट में बार-बार तार। सांस लेते हुए


1
अंत में आपको सही ऑपरेटर मिल गया है
लीक नून

@LeakyNun आप किस बारे में बात कर रहे हैं?
DanTheMan

आप चरित्र चुनने के लिए टर्नरी ऑपरेटर का उपयोग कर रहे थे, नहीं?
लीक नून

@LeakyNun शुरू में, हाँ, लेकिन अगर आप चैट को देखते हैं, तो मैंने भी लगभग एक मिनट बाद पोस्ट किया।
DanTheMan

2
@ जोर्डमस आप फ़ंक्शन को एक चर में असाइन कर सकते हैं:, आप f=n=>...सीधे इसे कॉल कर सकते हैं (n=>...)(5):। (या यदि आप Node.js REPL का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं this._, जो अंतिम चीज़ में प्रवेश के लिए खड़ा है)
DanTheMan

16

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

lambda n:'\/'[n%2]*n

महान, सरल और सुरुचिपूर्ण ^ _ ^
ABDDexter


9

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

के लिए +1 शामिल है -p

STDIN पर इनपुट के साथ चलाएँ:

squigly.pl <<< 6

squigly.pl

#!/usr/bin/perl -p
$_=$_%2x$_;y;01;\\/

यह सिर्फ पर्ल का मेरा संस्करण हो सकता है (मैं अभी भी 5.10 पर हूं) लेकिन जब तक मैं एक अतिरिक्त जोड़ नहीं देता, यह एक त्रुटि फेंकता है; अंत की ओर। मुझे लगता है कि क्योंकि यह आपको y के लिए एक विभाजक के रूप में सेमी-कोलन का उपयोग कर रहे यह है और आप बयान खत्म करने के लिए (और यदि आप इस के बाद कोड का अधिक लाइनों था दो की आवश्यकता होगी) एक और की जरूरत है
theLambGoat

@theLambGoat क्या आप सुनिश्चित हैं कि आप -pविकल्प का उपयोग कर रहे हैं ? मैं ;बिल्कुल ट्रांसपेरेंट में उपयोग करता हूं क्योंकि कोड के अंत -pमें एक निहित है ;इसलिए मैं 1 और बाइट बचा सकता हूं। यह कम से कम पर्ल 5.6 के बाद से काम कर रहा है (शायद जब तक -pविकल्प वास्तव में मौजूद था)
टन हास्पेल

@ लेम्बोसेट एमएम, मुझे एक पुराना रेडहेट मिला, जिसमें पर्ल 5.10 था जहां वास्तव में यह काम नहीं करता था। या तो यह एक लाल रंग का पैच है या यह वास्तव में लगभग 5.10 के लिए काम नहीं करता है (मुझे यकीन है कि यह पुराने पर्ल्स में काम करता है और यह नए पर्ल्स में भी काम करता है)
टन हास्पेल

मैं SUSE एंटरप्राइज सर्वर 11 पर चल रहा हूं, इसलिए यह केवल एक लाल चीज नहीं है। लेकिन मुझे लगता है कि जब तक यह कुछ संस्करणों में काम करता है, तब भी इसका एक वैध जवाब होना चाहिए। (मैं भी सिर्फ 5.08 में जाँच की है, केवल दूसरे संस्करण मैं इस समय का उपयोग किया और यह या तो वहाँ काम नहीं करता है)
theLambGoat

1
;जोड़ा के साथ कि चाल -pकाफी अच्छा है, अच्छी तरह से किया है।
दादा


7

सी #, 42 बाइट्स

string f(int n)=>new string("\\/"[n%2],n);

सही चरित्र का चयन करता है, फिर बार- nबार उस चरित्र से मिलकर एक नया तार बनाता है ।


7

PHP, 38 बाइट्स

for(;$i++<$a=$argv[1];)echo'\/'[$a%2];

(संस्करण 38 बाइट्स)

while($i++<$a=$argv[1])echo'\/'[$a%2];

(संस्करण 38 बाइट्स)

<?=str_pad('',$a=$argv[1],'\/'[$a%2]);

(संस्करण 40 बाइट्स)

<?=str_repeat('\/'[($a=$argv[1])%2],$a);


6

जेली , 5 बाइट्स

ị⁾/\x

इसे ऑनलाइन आज़माएं! या सभी टेस्टकेस सत्यापित करें।

ị⁾/\x

ị⁾/\    modular-indexing into the string "/\"
    x   repeat

हालांकि मुझे संदेह है कि इस चुनौती के पास इसके साथ कुछ करना हो सकता है, यह ध्यान देने योग्य है कि Ø^यह बाइट से कम है ⁾/\
असंबंधित स्ट्रिंग

6

जे, 10 बाइट्स

#'\/'{~2|]

यह एक छह-ट्रेन क्रिया है, जिसमें निम्न शामिल हैं:

# ('\/' {~ 2 | ])

यह एक हुक है #और ('\/' {~ 2 | ]); एक हुक का (f g) yविस्तार होता है y f (g y), इसलिए यह विस्तार करता है y # (... y), जो एकल-वर्णों के लिए, वर्णों की एक सूची देता है y

दूसरा भाग 5-ट्रेन है, जिसमें शामिल हैं:

'\/' {~ 2 | ]

यह दो कांटे का मूल्यांकन करता है:

'\/' {~ (2 | ])

आंतरिक कांटा, 2 | ]मापांक दो है। बाहरी कांटा, इसलिए है:

'\/' {~ mod2

जो स्ट्रिंग से {~mod2 इंडेक्स ( mod2) लेता है /

फिर, ऊपर से हुक का उपयोग करना:

y # (apt char)

इससे हमें जो चाहिए, वह मिलता है और हम काम करते हैं।


6

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

f n=cycle"\\/"!!n<$[1..n]

डेमियन के साथ -1 बाइट धन्यवाद cycle


1
f n=cycle"\\/"!!n<$[1..n]
डेमियन

@ डैमियन वाह, मैं चक्र को कैसे भूल गया।
xnor

मुझे नहीं पता। लेकिन मुझे खुशी है कि आपको एक बार "हरा" करने का अवसर मिला :)
डेमियन

6

गणितज्ञ, ३४ ३२ २ by बाइट्स

If[OddQ@#,"/","\\"]~Table~#&

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


आप उपयोग कर सकते हैं ~Table~#
मार्टिन एंडर

मुझे लगता है कि इसे 10.2 में जोड़ा गया था।
मार्टिन एंडर

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

1
@MartinEnder उन्होंने ~Do~Infinityऔर 10.2+ में भी जोड़ा होगा ...
LegionMammal978

5

पॉवर्सशैल, 30 27 बाइट्स

अद्यतन करें:

param($n)('\','/')[$n%2]*$n

करने के लिए स्विचन param, टाइममेड के लिए धन्यवाद ।


"$("\/"[$args[0]%2])"*$args[0]

या थोड़ा अधिक पठनीय

("\","/")[$args[0]%2]*$args[0]

परीक्षा:

> 1..10 | % { ./run.ps1 $_ }
/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////
\\\\\\\\\\

3
PPCG में आपका स्वागत है! यहाँ आसपास एक और PowerShell उपयोगकर्ता को देखकर अच्छा लगा। आप कुछ बाइट्स शेव करके ले सकते param($n)हैं $args, जैसे कि 27 बाइट्स के लिए निम्नानुसार इनपुट करें -param($n)('\','/')[$n%2]*$n
AdmBorkBork

5

गणितज्ञ, 29 बाइट्स

"\\"["/"][[#~Mod~2]]~Table~#&

क्रूली इस तथ्य का फायदा उठाता है कि [[1]]फ़ंक्शन का पहला तर्क [[0]]देता है जबकि फ़ंक्शन (हेड) को खुद लौटाता है, जिसे अजीब तरह से मान्य फ़ंक्शन पर लागू किया जाता है जिसका नाम "\\""मूल्यांकन" किया जा रहा है "/"


यह थोड़ा कम अजीब है जब आप यह मानते हैं कि फॉर्म a[b]का कुछ केवल सिर (इंडेक्स ) और तत्व (इंडेक्स ) के साथ एक सामान्य अभिव्यक्ति है , और फ़ंक्शन केवल विशेष प्रकार के अभिव्यक्ति हैं (वास्तव में, यह कहना अधिक सही होगा कि फ़ंक्शन उत्पन्न होते हैं ' टी एक्सप्रेशंस, लेकिन केवल एक्सप्रेशन बदलने के नियम हैं जो आमतौर पर फॉर्म होते हैं )। :)a0b1f[x...]
मार्टिन एंडर

2
मैंने इस साइट पर कई भाषाओं का दुरुपयोग होते देखा है, लेकिन मुझे लगता है कि यह मैथमेटिका का पहला दुरुपयोग है जिसे मैंने देखा है। बहुत बढ़िया!
DanTheMan





4

> <> (मछली), 30 बाइट्स

:2%?'/'o1-:?!;30.
30.  >'\'50p

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

इनपुट प्रारंभिक स्टैक है, आउटपुट है stdout

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


प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है!
डेनिस

@ डेनिस धन्यवाद! मैं स्वागत की सराहना करता हूं।
कैलम केर

4

दिल्लोग एपीएल , 11 बाइट्स

⎕IO←0कई सिस्टम पर डिफ़ॉल्ट की आवश्यकता होती है।

⊢⍴'\/'⊃⍨2|⊢

बहस

फेरबदल (दोहराव)

'\/'⊃⍨ स्ट्रिंग "/" द्वारा चयनित

2|⊢ जब तर्क दो से विभाजित होता है तो विभाजन शेष रहता है

TryAPL ऑनलाइन!


ठंडा! जे के समान
कॉनर ओ'ब्रायन

@ ConorO'Brien हाँ, केवल अंतर यह है कि J में 2-ट्रेनें हुक हैं, जबकि वे Dyalog में सबसे ऊपर हैं, इसलिए एक स्पष्ट बाएं टाइन की जरूरत है।
Adám

आह, मैं सोच रहा था कि तर्क क्यों था।
कॉनर ओ'ब्रायन

1
अंत में मेरे लिए सही ढंग से प्रस्तुत सभी पात्रों के साथ एक एपीएल उत्तर!
Cyoce

@Cyoce हाँ, काश हम एसई पर फोंट (और एम्बेड) निर्दिष्ट कर सकते।
अड्म

3

जावा 7, 68 65 बाइट्स

void c(int i){for(int x=0;x++<i;)System.out.print(i%2<1?92:'/');}

3 बाइट्स के लिए धन्यवाद बचाया @ user902383 और @SeanBean

वैसे ही जैसे इस जवाब के साथ , कम से कम कोड गोल्फ पाश और प्रिंट करने लगता है। दोनों पुनरावर्ती और
void c(int i){System.out.print(new String(new char[i]).replace("\0",i%2<1?"\\":"/"));}
लंबे समय तक प्रतीत होते हैं।

Ungolfed और परीक्षण कोड:

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

class M{
  static void c(int i){
    for(int x = 0; x++ < i;){
      System.out.print(i % 2 < 1
                        ? 92
                        : '/');
    }
  }

  public static void main(String[] a){
    for(int i = 0; i < 10; i++){
      c(i);
      System.out.println();
    }
  }
}

आउटपुट:

/
\\
///
\\\\
/////
\\\\\\
///////
\\\\\\\\
/////////

नमस्ते केविन। लैंबडा एक्सप्रेशन क्यों नहीं?
वले

@Vale हाय वाले। क्योंकि मैं एक पुराने जमाने का जावा 7 प्रोग्रामर हूं। :) यदि आपके पास जावा 8 या 9 उत्तर है जो मेरे उत्तर से थोड़ा अलग है, तो इसे पोस्ट करने के लिए स्वतंत्र महसूस करें।
केविन क्रूज़सेन

2
@Vale (वह उस तरह अजीब है: P)
शॉन वाइल्ड

1
मुझे लगता है कि अगर आप बदल x=-1;++x<iजाते x=0;x++<iहैं तो आप एक बाइट को कम कर सकते हैं
user902383

1
इसके अलावा, आप बदल सकते हैं "\\" : "/"के साथ 92:'/');
शॉन जंगली

3

आर, 47 46 बाइट्स

n=scan();cat(rep(c("\\","/")[n%%2+1],n),sep="")

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

एक बाइट दूर गोल्फिंग के लिए बाउंसीबॉल के लिए धन्यवाद।


1
अनुक्रमणिका का उपयोग करके एक बाइट बचाएं:n=scan();cat(rep(c('\\','/')[n%%2+1],n),sep='')
बाउंसीबॉल

3

टी-एसक्यूएल 50 बाइट्स

बेशक STDINयहाँ नहीं है, तो चलो INTइस तरह एक हार्डकोड चर मान लें : DECLARE @ INTतो समाधान है:

PRINT IIF(@%2=0,REPLICATE('\',@),REPLICATE('/',@))

3

पिप , 8 बाइट्स

"\/"@aXa

सीधा। इसे गुणा करने के लिए चरित्र और स्ट्रिंग पुनरावृत्ति का चयन करने के लिए मॉड्यूलर अनुक्रमण का उपयोग करता है। इसे ऑनलाइन आज़माएं!


यह सवाल पिप, पाइथ और जैली के बीच एक दिलचस्प तुलना प्रस्तुत करता है , बाद वाले दो ने प्रत्येक को 5 बाइट दिए। मॉड्यूलर अनुक्रमण और स्ट्रिंग पुनरावृत्ति के लिए सिंगल-चार ऑपरेटरों के साथ सभी तीन भाषाओं में निहित आउटपुट हैं, और स्ट्रिंग में बैकस्लैश से बचने की कोई आवश्यकता नहीं है। हालांकि दो प्रमुख अंतर हैं:

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

न तो इन विशेषताओं में से एक को पिप 1 में दिखाने की संभावना है (मैं असंतुलित सीमांकक के सौंदर्यशास्त्र को पसंद नहीं करता हूं, और बिंदु-मुक्त सिंटैक्स या अंतर्निहित ऑपरेशंस ऐसा लगता है जैसे वे मेरे इन्फिक्स एक्सप्रेशन पार्सर के लिए बहुत भिन्न होंगे), लेकिन मैं ' तीसरा फिडेल खेलने के साथ ठीक है। भले ही "पठनीयता" गोल्फिंग के सापेक्ष बहुत अधिक है, मैं यह तर्क दूंगा कि उन तीन अतिरिक्त बाइट्स ने पिप प्रोग्राम को एक नज़र में समझना बहुत आसान बना दिया है - और मेरी पुस्तक में, यह एक सार्थक ट्रेडऑफ़ है।

1 हालांकि, पिप में एकल-वर्ण स्ट्रिंग्स 'सीजम से प्रेरित और लिस्प में उद्धृत करके एक एकल सीमांकक का उपयोग करते हैं।


मुझे यकीन नहीं है कि पठनीयता एक कोड गोल्फ में है? बाइट्स की कीमत पर नहीं !
ग्रीनएजजेड

@GreenAsJade मुझे उम्मीद है कि बहुत से लोग एक ही महसूस करते हैं। मैं सिर्फ एक भेद करना होगा: code golf! = golflang design। अब आप अच्छी तरह से तर्क दे सकते हैं कि यही सिद्धांत (हमेशा बेहतर होता है) भाषा के डिजाइन पर भी लागू होता है। मैं सिर्फ कह रहा है कि मेरे लिए, प्रयोज्य और यहां तक कि सौंदर्यशास्त्र हैं विचार।
15

गोल्फ की भाषा बनाने के लिए प्रो टिप: infix का उपयोग न करें
Cyoce


pyth में निहित बिंदु मुक्त वाक्यविन्यास नहीं है। यह उसी तरह से बहुत काम करता है जैसे यह अजगर में करता है, जिससे यह पढ़ने योग्य हो जाता है। दूसरी ओर असंतुलित परिसीमन के बारे में आपकी टिप्पणी बहुत सत्य है
माल्टीसेन




2

SpecBAS - 28 बाइट्स

1 INPUT n: ?"\/"(ODD(n)+1)*n

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


2

जावा 8, 56 बाइट्स

(i,j)->{for(j=i;j-->0;)System.out.print(i%2<1?92:'/');};

मैं अपने जवाब को आगे बढ़ाने के लिए @Kevin क्रूज़सेन को धन्यवाद देना चाहता हूं।

अनगुल्ड टेस्ट प्रोग्राम

public static void main(String[] args) {
    BiConsumer<Integer, Integer> consumer = (i, j) -> {
        for (j = i; j-- > 0;) {
            System.out.print(i % 2 < 1 ? 92 : '/');
        }
    };

    consumer.accept(5, 0);
    consumer.accept(1, 0);
    consumer.accept(8, 0);
}

2

दरअसल, 10 बाइट्स

गोल्फ सुझाव का स्वागत करते हैं। इसे ऑनलाइन आज़माएं!

;'\'/2(%I*

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

       Implicit input of n
;      Duplicate n
'\'/   The strings "/" and "\"
2(%    n mod 2
I      If n mod 2, then "/", else "\"
*      Multiply by n. Implicit print at the end.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.