100 अक्षरों के भीतर सबसे उपयोगी कार्यक्रम बनाएं [बंद]


13

इस कार्य में, आपको कुछ भी करने के लिए एक उपयोगी कार्यक्रम बनाने की अनुमति है जिसे आप 100 अक्षरों के भीतर लिख सकते हैं। आपको कम वर्णों का उपयोग करने की अनुमति है, लेकिन अधिक नहीं।

नियम, बस मानक खामियों से बचाने के लिए जो अब हास्यास्पद नहीं हैं:

  1. आपका कार्यक्रम इंटरनेट तक नहीं पहुंच सकता है, जब तक कि वास्तव में ऐसा न हो। उदाहरण के लिए, जो प्रोग्राम इस वेबसाइट पर सबसे अपवित्र प्रश्न दिखाता है, वह इस प्रश्न की जांच के लिए इंटरनेट का उपयोग कर सकता है। हालाँकि, इसके वास्तविक स्रोत को खोजने और इसे चलाने के लिए इंटरनेट को ब्राउज़ करने की अनुमति नहीं है।

  2. आपका प्रोग्राम उस भाषा के लिए एक दुभाषिया नहीं हो सकता है, जिसमें यह लिखा गया था। हालाँकि, गैर-ब्रेनफक भाषा में ब्रेनफॉक दुभाषिया ठीक होगा।

  3. आपका प्रोग्राम बाहरी कार्यक्रमों को निष्पादित नहीं कर सकता है जो आपके कार्यक्रम को ठीक से करता है। उदाहरण के लिए, आप चला नहीं सकते vim, और दावा करते हैं कि आपका कार्यक्रम vimकार्यान्वयन है।

  4. आपका प्रोग्राम उस कंप्यूटर पर खतरनाक नहीं हो सकता, जिस पर उसे चलाया जा रहा है। आपको प्रोग्राम लिखने की अनुमति नहीं है जैसे rmdir /(यहाँ उदाहरण जानबूझकर काम नहीं करता है, इसे ठीक न करें), और दावा करें कि यह कंप्यूटर पर सभी फ़ाइलों को हटाने के लिए एक उपयोगी प्रोग्राम है।

  5. आपका कार्यक्रम जितना चाहें उतना धीमा हो सकता है, और जितना चाहें उतना संसाधनों का उपयोग करें, जब तक आप यह साबित कर सकते हैं कि यह वही करता है जो इसका मतलब था।

  6. आपको इस कार्य के लिए विशेष रूप से भाषा बनाने की अनुमति नहीं है। हालाँकि, आपको किसी अन्य प्रोग्रामिंग भाषा में अपनी आविष्कृत भाषा के लिए दुभाषिया बनाने की अनुमति है।


क्या मैं इस प्रतियोगिता के लिए एक से अधिक उत्तर दे सकता हूं?
TrungDQ

@TrungDQ: ज़रूर।
कोनराड बोरोस्की

1
यह आज तक के सबसे अच्छे प्रश्नों में से एक है;)
टिमटेक

13
यह इस तरह से बहुत लोकप्रिय है, यहां तक ​​कि इस तरह की एक साइट के लिए, यहां तक ​​कि एक लोकप्रियता प्रतियोगिता के लिए भी। वस्तुतः कोई भी उत्तर मान्य है, उनकी तुलना के लिए संदर्भ का कोई ढांचा नहीं है।
Aaronaught

3
यह सवाल नरभक्षण कोड-गोल्फ है। दिलचस्प 100 चरित्र विचारों को महान कोड-गोल्ड प्रश्नों में रीफ़्रेश किया जा सकता है। मैं उत्तरदाताओं को कुछ अतिरिक्त मिनट खर्च करने के लिए प्रोत्साहित करूंगा ताकि वे अपने सवालों को नए प्रश्नों में बदल सकें।
ज्ञानी

जवाबों:


26

सी - 47 बाइट्स

निम्नलिखित कार्यक्रम मानव इतिहास में लिखे गए प्रत्येक दस्तावेज़ के साथ-साथ हर दस्तावेज़ के साथ आउटपुट करता है जो कभी भी लिखा जाएगा और दिलचस्प ग्रंथों का भार होगा जो कोई भी मानव कभी नहीं आएगा (साथ में बीच में कचरे का "थोड़ा सा")। इसे थोड़ा वक्त दो. इसके अलावा, हर बार जब आप इसे चलाते हैं, तो यह पहले अलग-अलग पाठों का उत्पादन करेगा! तो है कि उपयोगी नहीं! (और चरित्र सीमा के भीतर वह सब!)

main(){srand(time(0));while(1)putchar(rand());}

यदि आप इसके बारे में परवाह नहीं करते हैं तो हर बार कुछ और उत्पादन करते हैं, आपको केवल 41 बाइट्स की आवश्यकता होती है !

main(){srand(0);while(1)putchar(rand());}

काफी C99 अनुरूप नहीं है, लेकिन यह आसानी से संकलित करता है gcc.exe (GCC) 4.7.0 20111220

नियम राज्य

आपका कार्यक्रम जितना चाहें उतना धीमा हो सकता है, और जितना चाहें उतना संसाधनों का उपयोग करें, जब तक आप यह साबित कर सकते हैं कि यह वही करता है जो इसका मतलब था।

कोई दिक्कत नहीं है।

कुछ चीजें, इस कार्यक्रम का उत्पादन होगा:

  • हर मिलेनियम समस्या का हल
  • कल के अखबार के लेख
  • शेक्सपियर के पूर्ण कार्य (निश्चित रूप से)
  • आपका सबसे गहरा रहस्य
  • इस प्रश्न के अन्य सभी उत्तर

वास्तव में नहीं, क्योंकि (जैसा कि टिप्पणी में सही ढंग से उल्लेख किया गया है), रैंड () केवल एक छद्म यादृच्छिक जनरेटर है, जो कुछ बिंदु पर चारों ओर लपेटेगा - शायद बहुत सार्थक ग्रंथों का उत्पादन करने के लिए बहुत जल्दी। लेकिन मुझे संदेह है कि एक सच्चे (हार्डवेयर) यादृच्छिक संख्या जनरेटर से डेटा प्राप्त करना 100 वर्णों के भीतर दूरस्थ रूप से संभव है। मैं इसे इसके मज़े के लिए यहाँ छोड़ दूँगा, हालाँकि।

डेनिस नोट के रूप में, एल्गोरिथ्म की यादृच्छिकता, कुछ हद तक सुधार (चरित्र सीमा के भीतर) के rand()^rand()>>16बजाय का उपयोग करके किया जा सकता है rand()


10
जरुरी नहीं। rand()केवल छद्म आयामी है - इससे पहले कि यह चारों ओर लूप न हो, यह किसी उपयोगी पाठ का उत्पादन नहीं कर सकता है।
user12205

1
@ डेनिस सौभाग्य से इस सवाल के नियमों के भीतर है! :)
मार्टिन एंडर

1
@ m.buettner: GLIBC की रैंड () के साथ , आपके प्रोग्राम के आउटपुट के बाइट्स के बीच एक सरल बीजीय संबंध है: आउटपुट को एक सरणी के रूप में देखते हुए x, आपके पास x[i] == (x[i - 3] + x[i - 31] + c[i]) % 256जहां c[i]0 है, संभावना 0 के साथ 0 है। 0.75 और 1 प्रोबेशन 0.25 है। इसका बहुत मतलब है कि यह आपके द्वारा बताई गई किसी भी चीज को उत्पन्न नहीं कर सकता है।
डेनिस

1
@ m.buettner: यह PRNG को बहुत बेहतर नहीं बनाएगा, लेकिन आप rand()^rand()>>16सादे के बजाय रैखिकता को हटा सकते हैं rand()। यदि आप बाइट्स को बचाने के तरीके खोज रहे हैं, तो निकालें intऔर %256
डेनिस


18

बीबीसी बेसिक, 84 वर्ण

MODE 6:INPUT T,A,B,A$,B$:FOR X=0 TO 1279:A=A+EVAL(A$):B=B+EVAL(B$):DRAW X,A+500:NEXT

पहले और दूसरे क्रम के अंतर समीकरणों के समाधानों को प्लॉट करता है।

उपयोगकर्ता इनपुट के रूप में लेता है:

Title (does nothing)
Start value for A (plotted value)
Start value for B (not plotted)
Expression for dA/dX
Expression for dB/dX

पोलीमथ नामक एक विभेदक समीकरण को हल करने वाले सॉफ्टवेयर से प्रेरित है, जिसका उपयोग मैं एक केमिकल इंजीनियर बनने के लिए अध्ययन करते समय करता था। हम अभिकारकों और उत्पादों के लिए अलग-अलग समीकरणों का इनपुट करेंगे और देखेंगे कि समय के साथ पूरी प्रतिक्रिया प्रणाली कैसे बदल गई। एक बहुत ही सरल सॉफ्टवेयर (इससे अधिक जटिल नहीं) लेकिन एक्सेल की तुलना में इस उद्देश्य के लिए बहुत अधिक सुविधाजनक है। दुर्भाग्य से मैं 100 वर्णों में पोलीमैथ का एक पूर्ण क्लोन नहीं कर सकता।

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


10

गणितज्ञ 76

यह कार्यक्रम एक एप्लेट का निर्माण करता है जो 240 देशों में से किसी के लिए विभिन्न गुणों के बारे में जानकारी प्रदर्शित करता है। यह अफगानिस्तान की वयस्क आबादी के बारे में जानकारी के साथ खुलता है। उपयोगकर्ता ड्रॉप-डाउन सूचियों के माध्यम से देश और संपत्ति सेटिंग्स को बदल सकता है।

मैथेमेटिका वुल्फरामअल्फा के साथ सहजता से जुड़ती है।
इस कारण से मेरा मानना ​​है कि प्रस्तुत करना चुनौती के # 1 आवश्यकता को पूरा करता है: "आपका कार्यक्रम इंटरनेट तक नहीं पहुंच सकता है, जब तक कि वास्तव में ऐसा न हो "।

यह बल्कि मामूली एप्लेट बस मैथेमेटिका भाषा में मौजूदा कार्यक्षमता का उपयोग करता है। एक छोटा वीडियो एप्लेट के बारे में कुछ अतिरिक्त जानकारी प्रदान करता है।

d = CountryData; Manipulate[WolframAlpha[p <> " " <> c], {p, d["Properties"]}, {c, d[]}]

अल्फा


नीचे देशों से संबंधित पहले 20 (223 में से) संपत्तियों की एक सूची है। एक अतिरिक्त प्रोग्रामिंग के साथ देशों के संबंध में अतिरिक्त जानकारी प्राप्त कर सकते हैं और गणितज्ञ में इस जानकारी का विश्लेषण कर सकते हैं।

CountryData["Properties"][[;; 20]]

{"एडल्टप्रोप्यूलेशन", "एग्रीकल्चरप्रोडक्ट्स", "एग्रीकल्चरलवेड एडेड", "एयरपोर्ट्स", "अल्टरनेटनेम", "अल्टरनेटिवडेनडेम नेम्स", "एएमराडिओस्टेशंस", "एनुअल रीडिरेट्स", "एनुअलडिजिट्स", "एनुअलब्लिडएयरडेन्ड्रिया", "अरबलेंड्रियाड्रिया"। क्षेत्र "," बर्थरेटफ़्रेक्शन "," बॉर्डरिंगकंट्रीज़ "," बॉर्डर लैंथ्स "," बाउंड्री लैंथ "," कॉलिंगकोड "," कैपिटलसिटी "," कैपिटलक्लास "}


मैं नहीं देखता कि आपके कार्यक्रम को "इंटरनेट तक पहुंच कैसे है"। आपके द्वारा प्रस्तुत किया गया डेटा परिवर्तित नहीं होता है, अक्सर आपको किसी बाहरी स्रोत पर भरोसा करने की आवश्यकता होती है।
शियोना

1
चाहे स्रोत अंदर हो या बाहर बहस के लिए खुला है। मैं वुल्फरामअल्फा (जो कोड बनाता है) के बारे में जानकारी के अनुरोध पर विचार कर रहा था (आवश्यक) "इंटरनेट तक पहुंच" का एक मामला होने के बावजूद, हालांकि कोड सीधे एक वुल्फराम डेटा सर्वर को संरक्षित करता है और ब्राउज़र के उपयोग की आवश्यकता नहीं होती है फ़ायरफ़ॉक्स की तरह। इसके लिए आवश्यक है कि किसी के पास नेटवर्क या WIFI कनेक्शन हो
DavidC

1
-1 अगर मैं कर सकता था - यह केवल पहले से मौजूद सेवा से एक डेटा संरचना बनाता है।
l0b0

@ l0b0 मुझे लगता है कि आप इसे इस तरह देख सकते हैं। या आप कह सकते हैं कि यह भाषा की कार्यक्षमता का फायदा उठाता है। आखिरकार, वुल्फरामअल्फा को मैथेमेटिका के साथ निकटता के लिए जमीन से डिजाइन किया गया था।
डेविड मार्क

1
" वुल्फरामअल्फा की जानकारी गणितज्ञ और वुल्फ्राम भाषा का अभिन्न अंग है " मामलों की एक खतरनाक स्थिति है। यह अस्तित्व में कम से कम स्थिर प्रोग्रामिंग भाषा बनाना चाहिए।
पीटर टेलर

9

बैश, 100 बाइट्स

head -c${1--1} /dev/zero |
openssl enc -aes-128-ctr -pass file:/dev/random 2>/dev/null |
tail -c+17

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

ऐसे मामलों में उपयोगी है जहाँ से पढ़ना /dev/urandomबहुत धीमा है।

बेंचमार्क

$ time head -c 1G /dev/urandom > /dev/null
Real    59.75
User    0.03
Sys     59.68
$ time random 1G > /dev/null
Real    0.68
User    0.64
Sys     0.86

यह स्क्रिप्ट मेरे i7-3770 पर प्रति सेकंड 1.5 GiB तक उत्पन्न होती है।

इसके विपरीत, प्रति मिनट/dev/urandom मुश्किल से 1 GiB उत्पन्न करने के लिए प्रबंधन से पढ़ना ।

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

  • head -c${1--1} /dev/zeroशून्य बाइट्स की निर्दिष्ट मात्रा को आउटपुट करता है। यदि कोई राशि निर्दिष्ट नहीं की जाती है, तो ${1--1}-1 बराबर होती है और सिर एक अनंत राशि का उत्पादन करता है।

  • openssl enc -aes-128-ctr -pass file:/dev/randomपासवर्ड को पढ़ने, शून्य बाइट्स को एन्क्रिप्ट करने के लिए काउंटर मोड में एईएस -128 का उपयोग करता है /dev/random

  • tail -c+17 आउटपुट के 16-बाइट हेडर से छुटकारा मिलता है।


ध्यान दें कि इस स्ट्रीम को पहले 2 ^ 68 आउटपुट बाइट्स (एक वास्तविक रैंडम स्ट्रीम में डुप्लिकेट किए गए ब्लॉक होने चाहिए, यह नहीं होगा) को देखकर "वास्तविक" यादृच्छिक स्ट्रीम से अलग किया जा सकता है।
पाओलो एबरमैन

@ Pa @loEbermann: आप स्पष्ट रूप से सही हैं। तो फिर, मेरी मशीन पर उस कई बाइट्स को उत्पन्न करने में 6,000 से अधिक वर्षों का समय लगेगा ...
डेनिस

7

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

किसी भी समीकरण को हल करें (ठीक है, सभी नहीं, लेकिन सामान्य कार्यों के साथ काम करना चाहिए ...)

r=s=>{for(x=e=a=1e-7;a;x-=e*a/(eval(s.replace(/x/g,x+e))-a))a=eval(s.replace(/x/g,x));return x}

ES6 के बिना (105 वर्ण):

function r(s){for(x=e=a=1e-7;a;x-=e*a/(eval(s.replace(/x/g,x+e))-a))a=eval(s.replace(/x/g,x));return x}

बस समीकरण के बाईं ओर मान लें कि दाहिना पक्ष शून्य है।

उदाहरण :

  • r("x*x-9") रिटर्न 3
  • r("Math.sin(x)-1")रिटर्न 1.5707963394347828(पीआई / 2)
  • r("Math.pow(2,x)-512") रिटर्न 9

चेतावनी: कुछ फ़ंक्शन (या यदि कोई समाधान नहीं है) पर विचलन कर सकते हैं और अपने ब्राउज़र टैब को फ्रीज कर सकते हैं, या NaN वापस कर सकते हैं।


6

C - 99 वर्ण

i;main(int c,char**a){for(a+=2;1+(c=getchar());)putchar(c+(**(a-1)-69?1:-1)**(*a+i++%strlen(*a)));}

यह कार्यक्रम किसी भी तरह के डेटा के एन्क्रिप्शन और डिक्रिप्शन की अनुमति देता है।

प्रयोग

पहले ... संकलन करो!

gcc crypto.c crypto

यदि आप mypreciousdata.txtकुंजी के साथ सामग्री को एन्क्रिप्ट करना चाहते हैं mysecretkey, और परिणाम को इसमें संग्रहीत करें myprotecteddata.txt:

cat mypreciousdata.txt | ./crypto E mysecretkey > myprotecteddata.txt

अब, यदि आप डीकोड की गई सामग्री को पुनः प्राप्त करना चाहते हैं myprotecteddata.txt:

cat myprotecteddata.txt | ./crypto D mysecretkey > mypreciousdata.txt

अब कुंजी, सुरक्षित!

व्याख्या

कृपया नीचे दिया गया विस्तृत और टिप्पणी कोड खोजें:

int main(int argc, char** argv)
{   
    // retrieve the first argument passed to the program (action)
    char action = argv[1][0];

    // retrieve the second argument passed to the program (key)
    char* key = argv[2];

    // initialize character position in the key
    int i = 0;

    // initialize the current input character
    char c = 0;

    // loop until we reach the end of input
    while (c != -1){
        // get a character from stdin
        c = getchar();
        if (action == 'E'){
            // encode the current character
            putchar(c + key[i]);
        } else{
            // decode the current character
            putchar(c - key[i]);
        }
        // increment the position in the key, without overflow
        i = (i + 1) % strlen(key);
    }
}

यह आपके प्रकार के आकार (आमतौर पर 256) के वर्णमाला के लिए अनुकूलित वाइजेनियर सिफर का एक charप्रकार है।
पाओलो एबरमन

5

GolfScript

मैं इसे ठीक 100 अक्षरों में निचोड़ने में कामयाब रहा!

{{}/]{97-}%}:b~:|;"etaoinshrdlcumwfgypbvkjxqz"b:f,:&,{:x[|{&x-+&%f?}%{+}*\]}%$0=1=:x|{&x-+&%97+}%''+

यह ROT-n एन्क्रिप्टेड टेक्स्ट का इनपुट लेता है और टेक्स्ट को डिकोड किया हुआ आउटपुट देता है। ( यहां से लिया गया है ।) उदाहरण के लिए, जब इनपुट दिया जाता है pmttwxmwxtmwnxzwoziuuqvoxchhtmakwlmowtnabiksmfkpivom, तो आउटपुट होता है 8hellopeopleofprogrammingpuzzlescodegolfstackexchange


5

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

जावास्क्रिप्ट में एक अद्वितीय आईडी उत्पन्न करने के लिए
Math.random().toString(30).slice(2);

कुछ इस तरह का उत्पादन करता है: 'h9d2f4aniimma7h1d3pbffi0foi8d3mf'

30-32 अल्फा-न्यूमेरिक वर्णों के तार

Math.random().toString(36).slice(2)

कुछ इस तरह का उत्पादन करता है: 'uq2sze67hsacq5mi'

लंबाई 14-16 के स्ट्रिंग्स।


4

सी ++ 57

#include<iostream>
#include<conio.h>
int main(){std::cout<<getch();}  

यह कार्यक्रम एक चरित्र इनपुट लेता है और इसके ASCII मूल्य को आउटपुट करता है।


4
ब्रेनफक $ कोड बहुत छोटा है -,:
टिमटेक

2
@ टिमटेक मैं $ 15 को नहीं जानता
मुकुल कुमार


3

फोरट्रान - 85 बाइट्स

l=0;read(*,*)n;do while(n>0);i=mod(n,10);l=l+i;n=n/10;enddo;print*,"digit sum=",l;end

एक संख्या में पढ़ता है और अंकों के योग को प्रिंट करता है । प्रोजेक्ट यूलर समस्याओं के लिए उपयोगी ।


यह प्रोजेक्ट यूलर समस्याओं के लिए कैसे मदद करता है?
पाओलो एबरमन

@ Pa @loEbermann: शायद मुझे प्रोजेक्ट यूलर से पहले "कुछ" जोड़ना चाहिए था। मुझे यकीन है कि समस्याएं 16, 20 और 119 अंकों के अंकों का उपयोग करती हैं, दूसरों के बारे में निश्चित नहीं हैं, लेकिन उनकी कई समस्याओं को इसकी आवश्यकता नहीं है।
काइल कानोस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.