10 प्रिंट सीएचआर $ (205.5 + आरएनडी (1)); : PHP में GOTO 10 (या कुछ और, उस बात के लिए)


23

निम्नलिखित मूल कथन की संक्षिप्तता के बारे में सह-कार्यकर्ता के साथ बस 'उत्साही' बातचीत हुई:

10 PRINT CHR$(205.5+RND(1)); : GOTO 10

यह इस पुस्तक का शीर्षक है , और केवल एक क्रम /और \वर्णों को मुद्रित करेगा , दोनों के बीच यादृच्छिक रूप से, जिसके परिणामस्वरूप एक पैटर्न होता है:

यहाँ छवि विवरण दर्ज करें

( Http://www.flickr.com/photos/rndmcnlly/5058442151/sizes/o/in/photostream/ से उधार ली गई छवि )

एक PHP प्रोकैलिटी होने के नाते, हमने सोचा कि PHP में एक ही चीज़ लिखने का सबसे कॉम्पैक्ट तरीका क्या होगा, और इसके साथ आया:

while(1) { echo chr(47 + 45 * rand(0,1)); }

chr(47)एक /चरित्र है, और chr (92) एक है \। तो कथन echo chr(47 + 45 * rand(0,1));दोनों के बीच बेतरतीब ढंग से वैकल्पिक होगा, विज्ञापन nauseum।

अपने चयन की भाषा में, अक्षरों \और /अक्षरों के अनंत यादृच्छिक अनुक्रम को आउटपुट करने के लिए सबसे छोटा प्रोग्राम या फ़ंक्शन लिखें , जहां प्रत्येक वर्ण को चुने जाने की समान संभावना है।


1
आप {}ब्रेसिज़ खो सकते हैं , लेकिन यह संक्षिप्त है जितना कि आप इसे बना सकते हैं।
माइकल 10

यह अच्छा है। समान छवि प्राप्त करने के लिए किस फ़ॉन्ट का उपयोग किया जा सकता है?
डेनियरो

1
यह (चित्र) मुझे पहले "प्रोग्राम" की याद दिलाता है, जो मैंने अपने कोमोडोर पर लिखा है 64 सीधे मैनुअल से बाहर :) आह सुखद दिन
डेल

@daniero मुझे लगता है कि वास्तविक टाइपफेस को टर्मिनल कहा जाता है, लेकिन मैंने इसे "विंडोज कमांड प्रॉम्प्ट" कोडपेन.io
nickforddesign/

क्या अजीब संयोग है कि इस कोड गोल्फ रेपो गितुब पर उसी सटीक चुनौती होती है ... github.com/noops-challenge/golfbot
Geza Kerecsenyi

जवाबों:


9

gotoऑपरेटर संस्करण 5.3.0 से पीएचपी को जोड़ा गया है, ताकि आप के रूप में आप बुनियादी में होगा एक ही विधि का इस्तेमाल कर सकते हैं:

a: echo chr(47 + 45 * rand(0,1)); goto a;

18

चूंकि यह कोडगॉल्फ में स्थानांतरित कर दिया गया है ...

PHP 30 बाइट्स

<?for(;;)echo rand(0,1)?~Ð:~£;

Ðचरित्र 208 है, और £चरित्र 163 है।

नमूना उपयोग (एक विंडोज बॉक्स पर):

color 18 & php maze.php

कुछ इसी तरह का उत्पादन:

यह एक मोनोपास फॉन्ट के साथ सबसे अच्छा काम करता है जो कि बिल्कुल वर्गाकार है (यहाँ मैंने मानक सिस्टम फॉन्ट 8x8 चुना है)। अपने डिफ़ॉल्ट रंग पर वापस जाने के लिए, आप colorबिना किसी पैरामीटर के फिर से टाइप कर सकते हैं ।


के साथ एक अतिरिक्त बाइट बचा सकता है rand()%2(किसी ने भी नहीं बताया कि यह कैसे छद्म यादृच्छिक था) - इसके अलावा यूनिकोड टर्मिनलों (जैसे OSX) पर काम नहीं करता है
लेह

@Leigh इसके कार्यान्वयन के कारण, rand()%2शून्य और एक के बीच वैकल्पिक होगा। mt_rand()%2हालांकि, काम करेगा।
प्रिमो

15

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

PETSCII को कम करते हुए, मैंने अपना "\" और "/" रोल किया।

यहाँ संक्षिप्तता के लिए कोई सिगार।

Graphics[{Thickness[.005],RGBColor[0.73,0.55,1.],Line/@Flatten[Table[RandomChoice[{{{x,y},{x+1,y+1}},{{x+1,y},{x,y+1}}}],{x,40},{y,25}],1]},Background->Blue]

नीला भूलभुलैया


यह चित्र ग्रे डॉट ऑप्टिकल भ्रम करता है !!
मैजिक ऑक्टोपस Urn

8

ब्रेनफक - 534

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

मेरी चुभन ( यहाँ से ) बड़ी और बेहद धीमी दोनों है। शायद एक साधारण एलएफएसआर या इसी तरह का पर्याप्त होगा, लेकिन यह काम करता है:

यहाँ छवि विवरण दर्ज करें


मुझे लगता है कि यह यादृच्छिक नहीं है, हालांकि, क्योंकि यह ब्रेनफक है।
आउटऑफ़्फ़र

इनमें से अधिकांश बिल्ट-इन prng पर निर्भर हैं। हाँ, यह हर बार एक ही उत्पादन होगा। मुझे लगता है कि यह कुछ अतिरिक्त आकर्षण की कीमत पर कीबोर्ड से सीड किया जा सकता है, लेकिन वास्तव में यहाँ बात नहीं है, मुझे लगता है।
16

5

सी, 39 वर्ण (38 MSVC पर)

main(){while(putchar(rand()%2?47:92));}

यहाँ छवि विवरण दर्ज करें इसे चलाकर देखें।

MSVC पर, हम जगह ले सकता है putchar()के साथ _putch()और एक बाइट को बचाने, लेकिन यह IDEOne में काम नहीं करता।

main(){while(_putch(rand()%2?47:92));}


3

print1 का रिटर्न मान है, इसलिए यदि आप इसका उपयोग करते हैं तो आप पूरी अभिव्यक्ति को इसमें लपेट सकते हैं while:

while(print chr(47 + 45 * rand(0,1));

आप शायद इसे और भी आगे बढ़ा सकते हैं।


3

रूबी, 27 23 वर्ण

loop{$><<"/\\"[rand 2]}

$><< 'प्रिंटआउट टू स्टडआउट' है।


2
आप को बदलने के लिए सक्षम होना चाहिए "/\\"के साथ '\/'। रूबी 1.8 को [rand(2),1]एससीआई कोड के बजाय चरित्र का निर्माण करने की आवश्यकता है।
प्रिमो

3

सी ++, 45 शुल्क

int main(){for(;;)cout<<(rand()%2?"/":"\\");}

लघुता के लिए किसी भी पुरस्कार को जीतने के लिए नहीं जा रहा है, लेकिन मैंने पहले ही उल्लेखित पुस्तक के बारे में सुना था, इसलिए मैंने इसे लिखा था।

पुचकार चाल भी सी ++ में काम करती है, आपको 43 से नीचे ले जाती है, लेकिन आप मुख्य पर रिटर्न प्रकार घोषित करने से बच नहीं सकते हैं।


3

मैं सीएसएस शैली का उपयोग कर बनाने की कोशिश, और यह काम है

<style>
  body {
    font-family: monospace;
    line-height:75%;
    letter-spacing:-3px;
  }
</style>

यह php कोड:

<?php
  $i=10000;
  while($i) {
    if($i%200 == 0) echo '<br/>';
    echo chr(47 + 45 * rand(0,1));
    $i--;
  }
?>

मैं एक वैकल्पिक शैली सुझाव देना चाहते हैं: font-family: courier; line-height: 0.75em; letter-spacing: -0.25em;का उपयोग करते हुए -0.25emलगता है की तुलना में बेहतर अप मैच के लिए पत्र-रिक्ति के लिए -3px, एक अयथार्थ की वजह से कलाकृतियों है जो ptकरने के लिए pxरूपांतरण।
प्रिमो

3

आम लिस्प - 68

(defun s(l)(elt l(random(length l))))(loop do(format t"~a"(s"/\\")))

लूप एक जटिल और एक सरल वाक्यविन्यास दोनों की अनुमति देता है, सरल एक प्रस्तावना की तरह है, लेकिन हमेशा के लिए लूपिंग। तुम गिरा सकते हो do
coredump


3

Befunge-98 (PyFunge) , 7 बाइट्स

? '/,\'

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

?भेजता आईपी बाएं या दाएं, तो या तो /या \के साथ मुद्रण से पहले धकेल दिया जाता है ,। मुद्रण के बाद '/या \'गलत क्रम में निष्पादित करते समय , यह केवल स्टैक (विभाजन या स्वैप) की चीजों को करता है, और फिर दोहराने से पहले एक अप्रासंगिक चरित्र को धक्का देता है।


मैं सिर्फ जो किंग के जवाब पर एक अलग 7 बाइट बेफुंगे -98 समाधान का प्रस्ताव दे रहा था। लेकिन यह दृष्टिकोण शून्य दिखता है।
जेम्स होल्डरनेस

3

Befunge, 12 9 8 7 बाइट्स

संपादित करें: जेम्स होल्डरनेस ने एक पागल समाधान का पता लगाया जो इसके बजाय तीन उद्धरणों का उपयोग करता है।

?\","/"

प्रत्येक प्रतीक के लिए ढेर सारे अतिरिक्त पात्रों के साथ ढेर को उखाड़ फेंकता है, लेकिन जब आप उस 1 बाइट को गोल कर सकते हैं, तो कौन परवाह करता है?

पुराना संस्करण

"/\"?>,#

( ट्रेलिंग स्पेस पर ध्यान दें) ट्रेलिंग स्पेस को स्पष्ट रूप से ज़रूरत नहीं है (धन्यवाद मिस्ता फिगर्स)

यह ऑनलाइन की कोशिश करो

"/\" Adds both / and \ to the stack
    ? Chooses a random direction to go in. Both up and down loop back around to the ? so it's 50% chance to go in either direction.
Going left
"/\"  >,#  Adds \ and / to the stack but only print the second, the / before heading back
Going right
      >,# Prints the top of the stack, the \ before heading back

यह स्टैक को भरने के लिए शुरू होता है, जिसमें प्रत्येक प्रतीक के लिए एक अतिरिक्त प्रतीक मुद्रित होता है।


1
ऐसा लगता है कि आप अतिरिक्त स्थान से छुटकारा पा सकते हैं, जैसा कि #एक पंक्ति के अंत में है। यह सुसंगत व्यवहार नहीं है, लेकिन आप जो दुभाषिया इस्तेमाल कर रहे हैं, वह इसकी अनुमति देता है: tio.run/##S0pNK81LT/3/X0k/RsneTkf5/38A
MildlyMilqueto3

मुझे आश्चर्य है कि क्या आप केवल एक का उपयोग करने में सक्षम हैं ", लेकिन मेरी कोशिशें निरर्थक हैं। क्योंकि आपको /एक तरफ की जरूरत है ", आपको आधा समय विभाजित करना होगा।
MildlyMilquetoast

@ MistahFiggins स्पेस निश्चित रूप से किसी भी मानक Befunge-93 कार्यान्वयन के लिए आवश्यक नहीं होना चाहिए। कोड कुछ फ़ंज -98 दुभाषियों में विफल हो सकता है, जहां कल्पना अधिक अस्पष्ट है, लेकिन एक स्थान जोड़ने से उन मामलों में वैसे भी मदद नहीं मिलेगी - आपको इसे काम करने के <बाद की आवश्यकता होगी #
जेम्स होल्डरनेस

@MistahFiggins एक उद्धरण से छुटकारा पाने के लिए, आप 'इसके बजाय Befunge-98 में ऐसा कर सकते हैं । इसे ऑनलाइन आज़माएं!
जेम्स होल्डरनेस

2
@JoKing बस एहसास हुआ कि आप वास्तव में तीन उद्धरणों के साथ बेहतर कर सकते हैं! ?\","/"केवल यह उल्टा है कि मुझे लगता है कि यह बहुत तेजी से स्टैक को ओवरफ्लो करेगा।
जेम्स होल्डरनेस

2

ज्यादा बेहतर नहीं है। सरणी dereferencing सुविधा के लिए php 5.5+ की आवश्यकता है।

while(1) { echo ['/', '\\'][rand(0, 1)]; }

कभी सोचा भी नहीं था कि, धन्यवाद!
जुडी

1
वास्तव में PHP स्ट्रिंग्स के लिए सदस्यता का समर्थन करता है while(1)echo'/\\'[rand(0,1)];:।
13

2

अजगर, ६th

"मेरी भाषा इस श्रेणी में बेकार है" में, हमें पायथन मिला है!

import random,sys
while 1:sys.stdout.write(random.choice('/\\'))

आयात पर कुछ चार्ट के लिए Ivo का धन्यवाद और choice


ठीक है, आप 'sys import *' से कुछ भी सेव नहीं कर रहे हैं - यदि आप 'import sys, random' लिखते हैं और sys.stdout और random.random का उपयोग करते हैं, तो आप 5 बाइट्स बचाएंगे।
इवो

Python3: 1 जबकि यादृच्छिक आयात: प्रिंट (random.choice ('/ \\'), अंत = '')
Ivo

@ मैं, धन्यवाद, मैं पसंद के बारे में भूल गया! आप पी 3 रख सकते हैं, हालांकि। ;)
बूथबी

यदि आप अपनी स्ट्रिंग को उल्टा करते हैं, तो आपको बैकस्लैश से बचने की ज़रूरत नहीं है, इस प्रकार एक बाइट की बचत होती है।
जोनाथन फ्रीच

2

> <> , 14 बाइट्स

मैं उम्मीद कर रहा था कि मैं इसे 3 * 3 वर्ग तक सीमित कर सकता हूं लेकिन सफल नहीं हुआ।

"/\
~x/
o</
 !

आप इसे यहाँ आज़मा सकते हैं


2

क्यूबिक्स , 12 बाइट्स

D<^<!"/\"B!o

ऑनलाइन दुभाषिया में देखें!

यह निम्नलिखित घन जाल के लिए नक्शे:

    D <
    ^ <
! " / \ " B ! o
. . . . . . . .
    . .
    . .

व्याख्या

सेट अप:

आईपी ​​पहली बार में पूर्व की ओर बढ़ना शुरू करता है !। यह 'स्किप अगर ट्रू' कमांड है, जो तब गलत है जब स्टैक पर कुछ नहीं होता है, इसलिए कोई कमांड नहीं छोड़ते हैं। "/\"स्ट्रिंगमोड में प्रवेश करता है और इन दो चरित्र कोड को स्टैक में जोड़ता है। B!oयहाँ ज्यादातर एक नो-ऑप है, केवल स्टैक को उलट कर।

आईपी ​​अब पहले की ओर घूमता है !। हालांकि, स्टैक पर अब सकारात्मक पूर्णांक हैं, इसलिए पहले "छोड़ दिया गया है। इसका मतलब /अब चरित्र नहीं है, लेकिन एक दर्पण, आईपी को मुख्य लूप में भेज रहा है।

मुख्य घेरा:

Dआदेश केवल Cubix में अनियमितता का स्रोत है। यह आईपी को एक यादृच्छिक दिशा में भेजता है। दक्षिण और पूर्व को तीरों से बंद करके, हम सुनिश्चित करते हैं कि आईपी में उत्तर की ओर बढ़ने की 50% संभावना है, और पश्चिम की ओर बढ़ने की 50% संभावना है।

यदि यह पश्चिम की ओर जाता है, तो स्टैक उल्टा हो जाता है। यदि यह उत्तर की ओर मुख करता है, तो शीर्ष वर्ण मुद्रित होता है।

यह वांछित के रूप में स्लैश का यादृच्छिक अनुक्रम बनाता है।


2

PHP, 26 31 बाइट्स

आपके ( व्हॉट्सएप या ब्रेसिज़ के बिना) आठ तीन बाइट्स ,
दो बाइट्स प्राइमो सॉल्यूशन (टैग के बिना) से कम हैं

PHP 5.4.9 दिसंबर 1012 में वर्तमान संस्करण था, इसलिए ...

for($s="\/";;)echo$s[rand()%2];

PHP 5.5 या बाद में शाब्दिक स्ट्रिंग अनुक्रमण के लिए आवश्यक है।

इसे ऑनलाइन चलाएं -rया इसके लिए प्रयास करें


इनवॉइस पोस्टिंग के समय PHP 5.5 मौजूद नहीं था, लेकिन फिर भी +1 है। इसके अलावा, rand()&1विंडोज के लिए PHP बिल्ड पर प्रयास करें । आप हैरान हो सकते हैं।
प्रिमो


2

2

जावा 8, 60 59 54 53 बाइट्स

v->{for(;;)System.out.write(Math.random()<.5?47:92);}

-1 बाइट की बदौलत @BenjaminUrquhart केprint साथ बदलकर write, ऐसा '/'हो सकता है 47

स्पष्टीकरण:

इसे ऑनलाइन आज़माएं (60 सेकंड के बाद का समय)।

v->{                     // Method with empty unused parameter and no return-type
  for(;;)                //  Loop indefinitely
    System.out.write(    //   Print:
      Math.random()<.5?  //    If the random decimal value in range [0,1) is below 0.5:
       47                //     Print forward slash
      :                  //    Else:
       92);}             //     Print backward slash

1
जावा। 60. बाइट्स। वाह।
आउटगॉल्फ

@EriktheGolfer Hehe। मैंने यह भी नहीं देखा था कि मैं बाइट-काउंट में औसत हूं। आमतौर पर मैं सिर्फ जावा को सबसे अधिक बाइट-काउंट में से एक मान रहा हूं, केवल ब्रेनफैक या सी # के साथ थोड़ा प्रतिस्पर्धी। xD (PS: मैंने इसे ५ ९: पी) में भी गढ़ा है
केविन क्रूज़सेन ४'१६

आप औसत नहीं हैं, आपके पास बहुत छोटी बाइट गिनती है (जावा को मानते हुए, यह बहुत छोटा नहीं है) अच्छा नहीं है। लेकिन, कम से कम, यह
जेएवीए

@EriktheGolfer हम्म, जावा 8 c->{for(;;)System.out.print(Math.random()<.5?'/':92);}( 54 बाइट्स ) के साथ छोटा नहीं है या क्या आपका मतलब है कि जावा 7 जावा 8 से अधिक लंबा है? उस स्थिति में आप वास्तव में सही हैं।
केविन क्रूज़सेन 14

1
53 बाइट्स पर स्विच करने System.out.writeऔर उसके '/'साथ बदलने के लिए47
बेंजामिन Urquhart

2

जावास्क्रिप्ट (Node.js) , 59 55 54 बाइट्स

मूल उत्तर

while(1){process.stdout.write(Math.random()>=0.5?"/":"\\")}

-4 बाइट्स मैनटवर्क की बदौलत

while(1)process.stdout.write(Math.random()<.5?"/":"\\")

-1 बाइट का धन्यवाद कोनोर ओ ब्रायन को

for(;;)process.stdout.write(Math.random()<.5?"/":"\\")

साइट पर आपका स्वागत है!
caird coinheringaahing

एक भी अनुदेश ब्लॉक के चारों ओर ब्रेसिज़ की आवश्यकता नहीं है; जावास्क्रिप्ट में 0 पूर्णांक भाग को छोड़ा जा सकता है; एकल चरित्र ऑपरेटर का उपयोग करने के लिए सशर्त रिवर्स while(1)process.stdout.write(Math.random()<.5?"/":"\\"):।
मैनेटवर्क

@manatwork धन्यवाद! अपडेट किया गया।
1024x2

आप for(;;)इसके बजायwhile(1)
Conor O'Brien

आपका भी धन्यवाद। जोड़ा गया।
1024x2

1

मुझे लगता है कि आप पुनरावृत्ति का उपयोग कर सकते हैं।

function slashes() {echo chr(47 + 45 * rand(0,1)); slashes();}

मुझे लगता है कि आप पुनरावृत्ति का उपयोग कर सकते हैं।

function slashes() {echo chr(47 + 45 * rand(0,1)); slashes();}

...

स्टैक स्पेस अनंत नहीं है।
कोडेडडिक्ट

@codaddict तो यह टाइमआउट होगा।
नफतली उर्फ ​​नील

एक बहुत अधिक समय मानकर आपका स्निपेट ओपी के समतुल्य नहीं है।
कोडेडडिक्ट

1
@codadict ओपी बार बाहर के रूप में अच्छी तरह से योग्य। यह एक अनंत लूप है!
नफतली उर्फ ​​नील

1
आपका समय समाप्त होने से पहले एक रन टाइम एरर बनेगा।
कोडेडडिक्ट

1

एक पात्र को काट दिया:

while(1) { echo chr(2 + 45 * rand(1,2)); }

फिर घुंघराले ब्रेसिज़ को हटा दें:

while(1) echo chr(2+45*rand(1,2));

एक और चाल, एक ही लंबाई के साथ:

while(1) echo chr(rand()%2*45+47);

1
एल्गोरिथ्म के कारण यह कार्यरत है, rand()%2परिणामस्वरूप 0एस और 1एस का एक विकल्प होगा । अविश्वसनीय रूप से यादृच्छिक नहीं। आपको इसके बजाय rand(0,1)या उपयोग करने की आवश्यकता होगी mt_rand()%2
प्राइमो

1

पर्ल

यह मेरे लिए मज़ेदार लगता है:

perl -pe '$_="~"ge$_?"/":"\\"' </dev/urandom

(यहाँ विषय से बाहर होने के लिए क्षमा करें। मुझे पता है कि यह PHP नहीं है)


1

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

for(){Write-Host(Random("\","/"))-N}

दुर्भाग्य से राइट-होस्ट के लिए कोई छोटा उपनाम नहीं लगता है जो हर वर्ण के बाद एक नई रेखा का कारण नहीं बनता है।


1

16-बिट x86 असेंबली कोड, 10 बाइट्स

मुझे याद नहीं है कि क्या यह पुस्तक में समाप्त हो गया है।

init:
scasb            ;read from where ES:DI points and compare to AL 
                 ;this sets flags similar to a subtraction 
salc             ;set mask in AL to 00 or FF 
and   al,'\'-'/' ;begin choosing character (AL is 00 or 2D) 
add   al,'/'     ;finish choosing character 
writec:
int   29h        ;write char in AL 
jmp   init       ;loop endlessly


1

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

loop {<\ />.pick.print}
  • loop हमेशा के लिए खो देता है।
  • <\ />तार की एक सूची है \और /
  • .pick बेतरतीब ढंग से दो तारों में से एक को चुनता है।
  • .print प्रिंट करता है कि यादृच्छिक स्ट्रिंग।

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