अ चैस्टोमैथी ऑफ़ ऑब्सुरिटी


11

आपको एक भाषा में चार कार्य पूरे करने चाहिए:

  • इस (codegolf.se) वेबसाइट पर खोजे जाने पर कोई परिणाम नहीं मिले , उदाहरण के लिए टॉफ़ीस्क्रिप्ट ;
  • Esolang , रोसेटा कोड या विकिपीडिया पर सूचीबद्ध एक पृष्ठ होना चाहिए ;
  • एक अलग भाषा हो, बजाय एक अलग संस्करण के (जैसे कि अजगर 2.1 मान्य होगा यदि अजगर पहले दो मानदंडों को संतुष्ट करता है)।

* यह अपवाद टॉफ़ीस्क्रिप्ट के लिए हिट हो रहा है।

आपको जो चार कार्य पूरे करने चाहिए, वे हैं:

1) अपनी चुनी हुई भाषा का विवरण (<140 अक्षर) वर्णन / प्रचार करें।

2) प्रिंट "हैलो वर्ल्ड! यह अंदर लिखा है <programming language name>।"

3) एक उपयोगकर्ता निर्दिष्ट सीमा में सभी विषम संख्याओं को प्रिंट करें। (उदाहरण के लिए, 20 25वापस लौटना चाहिए 21 23 25)।

4) एक कार्यक्रम लिखें जो आपको सबसे अच्छा लगता है जो आपकी चुनी हुई भाषा की एक दिलचस्प विशेषता को प्रदर्शित करता है।

स्कोरिंग:

  • यह एक लोकप्रियता प्रतियोगिता है
  • उपरोक्त तीन में से दो में सूचीबद्ध होने पर 10 अंक का बोनस, यदि तीनों में 25।
  • स्कोर 1 जुलाई 2015 की मध्यरात्रि यूटीसी में प्राप्त किए गए वोटों का जोड़ है, साथ ही बोनस भी।

स्पष्टीकरण:

  • टास्क 1) एक ट्वीट करने योग्य कार्यक्रम हो सकता है लेकिन सादा पाठ भी स्वीकार्य है।
  • कई भाषाओं में एक मौजूदा दुभाषिया नहीं है; इनका समाधान ठीक है, लेकिन विश्वास में लिया जाएगा।
  • भाषा की पसंद के लिए दूसरा मानदंड उन पृष्ठों को मना करता है जिनकी रचना इस पोस्ट के बाद होती है। यदि, किसी दी गई भाषा के लिए, X, समस्या का समाधान रोसेटा कोड पर मौजूद है, लेकिन उसका अपना अलग पृष्ठ नहीं है, तो भी यह स्वीकार्य है।

4
आप प्रोग्रामर से बात कर रहे हैं, आपको यह कहने की ज़रूरत नहीं है and/or;)
भूमिगत

2
शाब्दिक रूप से लिया जाना चाहिए "कोई परिणाम नहीं लौटना चाहिए"? उदाहरण के लिए " मॉन्ड " के लिए एक परिणाम है , लेकिन निश्चित रूप से उत्तर में समान मोंड नहीं है । क्या यह परिणाम के रूप में गिना जाता है?
मैनटवर्क

2
आपको शायद यह बताना चाहिए कि इस चुनौती से पहले Esolangs, Rosetta Code या Wikipedia के पेज मौजूद होने चाहिए थे।
मार्टिन एंडर

1
क्या आप स्पष्ट कर सकते हैं कि क्या कार्य 1 में 140 वर्ण प्रोग्राम की आवश्यकता होती है जो एक विवरण को आउटपुट करता है, या सिर्फ एक 140 वर्ण वर्णन (जो एक कार्यक्रम नहीं है)?
ट्राइकोप्लाक्स

1
मैंने यहां उठाए गए बिंदुओं को स्पष्ट किया है (कम से कम मुझे आशा है कि मेरे पास!) ऊपर है
किरन हंट

जवाबों:


6

bloop

बोनस: 10

Esolangs और विकिपीडिया पर BlooP के पेज हैं । BlooP रिटर्न के लिए PPCG खोज का कोई परिणाम नहीं है। यदि आप विशेष रूप से कम महसूस कर रहे हैं, तो आप इसे repl.it पर आज़मा सकते हैं


कार्य 1: ट्वीट

ब्लूप: कुछ नहीं बल्कि बंधे हुए लूप। ;) #प्रोग्रामिंग #goodtimes

यह हैशटैग और इमोटिकॉन्स सहित मानक ट्विटर स्टाइल का उपयोग करता है। यह किसी भी ट्विटर उपयोगकर्ता से अपील करेगा। *


टास्क 2: हैलो वर्ल्ड

DEFINE PROCEDURE ''GREETING'' [N]:
BLOCK 0: BEGIN
  PRINT['Hello World! This is written in BlooP.']
BLOCK 0: END.

GREETING[0];

जैसा कि आप देख सकते हैं, यह एक प्रमुख गोल्फ भाषा है। *


टास्क 3: अजीब संख्या

DEFINE PROCEDURE ''IS-ODD'' [N]:
BLOCK 0: BEGIN
  OUTPUT <= 0;
  CELL(0) <= 2;
  LOOP AT MOST N+1 TIMES:
  BLOCK 1: BEGIN
    IF N+1 = CELL(0), THEN:
    BLOCK 2: BEGIN
      OUTPUT <= 1;
      ABORT LOOP 1;
    BLOCK 2: END;
    CELL(0) <= CELL(0) + 2
  BLOCK 1: END;
BLOCK 0: END.

DEFINE PROCEDURE ''ODDS-IN-RANGE'' [A,B]:
BLOCK 0: BEGIN
  CELL(0) = A;
  LOOP AT MOST B TIMES:
  BLOCK 1: BEGIN
    IF CELL(0) > B, THEN:
    ABORT LOOP 1;
    IF IS-ODD[CELL(0)] = 1, THEN:
    PRINT[CELL(0)];
    CELL(0) <= CELL(0) + 1;
  BLOCK 1: END;
BLOCK 0: END.

ODDS-IN-RANGE[20,25];

BlooP में केवल उपलब्ध ऑपरेटर असाइनमेंट ( <=), जोड़, गुणा, से अधिक, कम और बराबर हैं। इसकी दर्दनाक क्रिया सिंटैक्स के कारण, यह वास्तव में बताने में बहुत आसान है कि भाषा की गहरी समझ के बिना भी क्या हो रहा है।


टास्क 4: दिलचस्प

नोट: इस कार्य के लिए मेरा स्निपेट बदलने के अधीन है, मुझे कुछ और दिलचस्प बात करनी चाहिए।

DEFINE PROCEDURE ''MINUS'' [M,N]:
BLOCK 0: BEGIN
  IF M < N, THEN:
  QUIT BLOCK 0;
  LOOP AT MOST M + 1 TIMES:
  BLOCK 1: BEGIN
    IF OUTPUT + N = M, THEN:
    ABORT LOOP 1;
    OUTPUT <= OUTPUT + 1;
  BLOCK 1: END;
BLOCK 0: END.

DEFINE PROCEDURE ''FIB''[N]:
BLOCK 0: BEGIN
  IF N < 1, THEN:
  QUIT BLOCK 0;
  OUTPUT <= 1;
  IF N < 3, THEN:
  QUIT BLOCK 0;
  OUTPUT <= FIB[MINUS[N,1]] + FIB[MINUS[N,2]];
BLOCK 0: END.

FIB[10];

निहारना, फाइबोनैचि संख्या।


* सच नहीं हो सकता


5

मॉन्ड *

  • * 'Mond' के लिए खोज करने से एक परिणाम (इस उत्तर के बावजूद) मिलता है, लेकिन यह एक गलत सकारात्मक है और वास्तव में भाषा का उल्लेख नहीं करता है।
  • रोसेटा कोड पेज । यह वास्तव में चुनौती पोस्ट किए जाने के बाद बनाया गया था, हालांकि क्विकॉर्ट कार्य का एक समाधान सितंबर 2014 से मौजूद है।
  • हालांकि मांड जावास्क्रिप्ट के समान दिखता है (वास्तव में, यह मोंड / जेएस पॉलीग्लॉट्स लिखना काफी आसान है), यह एक सबसेट, सुपरसेट या पुन: कार्यान्वयन नहीं है। यह अपनी अलग भाषा है।

इसे अपने ब्राउज़र में आज़माएं

पूर्ण प्रकटीकरण : मैं एक हद तक मोंड के विकास और डिजाइन की प्रक्रिया से जुड़ा हुआ हूं और उपयोगकर्ता-परिभाषित ऑपरेटरों सहित कई प्रमुख भाषा विशेषताओं को व्यक्तिगत रूप से लागू किया है जो कि कार्यों 3 और 4 में प्रदर्शित किए जाते हैं।

कार्य 1

पाइपलाइन ऑपरेटर ( |>) वाक्यविन्यास चीनी है जो पहले तर्क के रूप में डाले गए बाईं ओर के मूल्य के साथ फ़ंक्शन कॉल को दाईं ओर फ़ंक्शन कॉल में बदल देती है। foo |> bar()के रूप में ही है bar( foo )

"Simple, elegant scripting language implemented in C# for .NET/Mono" |> printLn();

टास्क # 2

"Hello World! This is written in Mond." |> printLn();

टास्क # 3

इस कार्य के लिए कोड कई चीजों को मानता है:

  1. संख्याओं की सीमा एक ही पंक्ति में दर्ज की जाएगी
  2. ऊपरी और निचले सीमा को एक ही स्थान से अलग किया जाएगा
  3. दी गई संख्याएँ आधार -10 में पूर्णांक हैं और इनमें केवल वर्ण हैं 0-9

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

// parse a string to a number
fun toNumber( str ) {
    var n = 0, pow = str.length();

    for( var i = 0; i < str.length(); ++i )
        n += ( str.charCodeAt( i ) - 48 ) * ( 10 ** --pow );

    return n;
}

fun map( arr, fn ) {
    var ret = [ ];

    foreach( var item in arr )
        fn( item ) |> ret.add();

    return ret;
}

// user-defined operator to create an upper-bound inclusive range a-la Ruby
// (i.e. 1 .. 5 produces [ 1, 2, 3, 4, 5 ])
seq( .. )( start, end ) {
    for( var i = start; i <= end; ++i )
        yield i;
}

// read a line from STDIN, trim leading and trailing whitespace,
// split the string to an array, map the array to parse all strings to numbers.
var nums = readLn().trim().split( " " ) |> map( toNumber );

// nums[0] .. nums[1] makes use of the user-defined operator declared on line 22.
// nums[0] is the lower bound, nums[0] is the upper bound.
foreach( var n in nums[0] .. nums[1] ) {
    if( n % 2 != 0 ) printLn( n );
}

टास्क # 4

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

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

// forward function compositing user-defined operator.
// the function on the right-hand side is called with
// the result of the function on the left-hand side.
fun( >>> )( fn1, fn2 ) {
    return fun( ...args ) {
        return fn1( ...args ) |> fn2();
    };
}

// the mythical "goes down to" operator of legend.
// a lazy sequence that returns all numbers starting from 'hi'
// down to (and including) 'lo'
seq( --> )( hi, lo ) {
    for( var i = hi; i >= lo; --i )
        yield i;
}

seq map( iterable, callback ) {
    foreach( var item in iterable )
        yield item |> callback();
}

// doubles the value of n
fun double( n ) -> n *  2;

// squares the value of n (** is the power operator, a-la Python or Ruby)
fun square( n ) -> n ** 2;

// gets the sequence for 10 down to 0, passes it into
// map, which maps it through the composited function of
// double and square, which first doubles the given value
// then squares it.
var nums = ( 10 --> 0 ) |> map( double >>> square );

foreach( var n in nums )
    printLn( n );

4
यह केवल रोसेटा कोड पर सूचीबद्ध है, इसे 25-pt बोनस कैसे मिलता है?
शिमोनस्टर

@ स्कोररस्टर स्कोरिंग बोनस की मेरी व्याख्या यह है कि भाषा को 0 खोज परिणामों की आवश्यकता है, इनमें से एक पर सूचीबद्ध होना चाहिए: रोसेटा कोड, एसोलंग या विकिपीडिया, और 25 बिंदुओं के लिए अर्हता प्राप्त करने के लिए एक अलग भाषा हो। अगर मैं गलत हूं और एकमात्र मानदंड यह है कि इसमें रोसेट्टा कोड, एसोलंग और विकिपीडिया पर पृष्ठ होने चाहिए , तो मैं तदनुसार संपादित करूंगा।
टोनी एलिस

नहीं, जिन 3 चीजों को आपने सूचीबद्ध किया है, वे चुनौती में अनुमति के लिए मानदंड हैं। यह 10 बिंदु बोनस के लिए अर्हता प्राप्त करता है, अगर कहते हैं, विकिपीडिया और रोसेटा कोड दोनों इसे सूचीबद्ध करते हैं। अगर रोसेट्टा, एसोलैंग और विकिपीडिया पर यह 25 पॉइंट बोनस है।
शिमोनस्टर

@ शिमस्टर मैं देख रहा हूं, मेरी गलती है। मैंने अपना उत्तर अपडेट कर दिया है।
टोनी एलिस

4

JQ

Codegolf.se पर 14 परिणामों में से कोई भी भाषा के बारे में नहीं है। ( jqऔर (अपरकेस वेरिएंट) पाइथ में अक्सर कथन लगता है।)

नहीं है Rosetta कोड पर JQ श्रेणी

आप इसे ऑनलाइन आज़मा सकते हैं लेकिन नीचे दिए गए कुछ उदाहरणों में नवीनतम संस्करण 1.5 की आवश्यकता है।

कार्य 1: ट्वीट

JSON JSON के लिए sed की तरह है; आप इसका उपयोग संरचित डेटा को उसी आसानी से संसाधित करने के लिए कर सकते हैं जो कि sed, awk, grep और मित्रों को पाठ के साथ खेलने देता है

(बेशर्मी से अपनी साइट से पहले पैराग्राफ को ट्विस्ट किया गया।)

टास्क 2: हैलो वर्ल्ड

bash-4.3$ jq -n -r '"Hello World! This is written in jq."'
Hello World! This is written in jq.

टास्क 3: अजीब संख्या

bash-4.3$ jq -R 'split(" ") | range(.[0] | tonumber; .[1] | tonumber + 1) | select(. % 2 == 1)' <<< '20 25'
21
23
25

टास्क 4: दिलचस्प

~ / .Mozilla / फ़ायरफ़ॉक्स / *। डिफ़ॉल्ट / Extension.json फ़ाइल में फ़ायरफ़ॉक्स एक्सटेंशन स्थापित जानकारी के बारे में जानकारी है। JSON डेटा पर 171 Kb में 0 newlines है, जो किसी भी तरह से पढ़ना मुश्किल है।

सुंदर JSON डेटा प्रिंट करें:

bash-4.3$ jq '' ~/.mozilla/firefox/*.default/extensions.json

रवींद्र। 8000 ++ लाइनें बहुत लंबी हैं, इसलिए इसे पेजर करने के लिए पास करें, लेकिन हाइलाइटिंग रखें:

bash-4.3$ jq -C '' ~/.mozilla/firefox/*.default/extensions.json | less -r

आउच। वैसे भी कितने एक्सटेंशन हैं?

bash-4.3$ jq '.addons | length' ~/.mozilla/firefox/*.default/extensions.json
58

ठीक है, लेकिन उनमें से कुछ अक्षम हैं। कितने बिल्कुल?

bash-4.3$ jq '[.addons[] | select(.active | not)] | length' ~/.mozilla/firefox/*.default/extensions.json
7

उनमें से कुछ काफी छोड़ दिए गए हैं और वर्तमान फ़ायरफ़ॉक्स के साथ काम नहीं करते हैं:

bash-4.3$ jq -r '.addons[] | [.defaultLocale.name, (.targetApplications[] | select(.id == "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"))] | select(.[1].maxVersion | gsub("[^\\d.]"; "") | tonumber < 38.0) | .[0]' ~/.mozilla/firefox/*.default/extensions.json
Unity Desktop Integration
Unity Websites integration
Ubuntu Firefox Modifications

(यह बाद में सच नहीं है। कुछ कारणों से एक्सटेंशन.json में एक्सटेंशन 'install.rdf' की तुलना में अन्य संस्करण शामिल हैं। लेकिन यह वैसे भी jq की गलती नहीं है।)


4

OOC

हाँ, मुझे लगभग एक महीने देर हो चुकी है। तो क्या???

कार्य 1

ooc एक प्रोग्रामिंग भाषा है जो C99 के लिए संकलित है जिसमें एक सुंदर वाक्यविन्यास है, और यह उच्च और निम्न-स्तरीय विकास दोनों का समर्थन करता है।

135 बाइट्स! वो बहुत नजदीक था!

इसके अलावा, नकली शांत ASCII- कला लोगो के लिए नकली बोनस अंक :

           +(NNhBBhss+'                  ~+'(sNBND=~.         
           -(=NDhNN+=+=' .   .  .    . .+='+~DNND+=.          
           .+-DBDDh+(D-<'      .....  -<+ (=~DNh+<(           
            '+<NNNB=~=z-(<-<<(+('-'~<<=- .+'sBNh~+            
             (~=NNND+=DB~(-.    . .    ...(=BNB+s--      ALL YOUR 
             .=-=DBDz-'~. .   ..'. .... '  '~s<<szh<.         
               <(~'. .  .  ..sD='-~'-'-DDs.. . .~sD(     CODEBASE  
            . ~+'  '  .-(-..sBNB~(~~+=hNNNz'<<z='-z(               
           . .=. -DDz<~s~  'BNNN=~+<shNNNND(sNNNh~(+    ARE BELONG
            .=<.(NNNNDDs. (hhs+=s=hNDNNBNBBs<BNND<<=.             
            .'-'~sNNs((- .''. ' -~NNDz+((~---~sB<'''.     TO US!
                '=(++(-..  . ...-~+B~'....'.''-+(     .             
                -=z<<'.. .'-...'-~hz~-'.''''-~-<=                     
                 .~+~s~  ~z<~'-'--hN=~((~'---(~~z~                    
                   (+<-.'+=''''~(+=Bz--~(((=+s+~(s                     
  IT'S OVER      . '+-..~<----~-+(sBNh+zBNNBNh+<z'                     
                   .<-'--''(<~=B=hDDD=<<<++=++<=.                   
  9000 BUGS!     .. s~..'h=++ss=D<<~+B(<(+<=Nz=+                     
                    +'.''+NNDN(+z(((sB<((s+hNh<+             
                   .= -~(~(zDNz+z+zhNDz=szhhBz++.       MADNESS?        
                   '+. ss<'~=NBNBBDzBzhshDD=+<<-                   
                   -= . +s~-(+==hhDBNBDDs==hz+<     THIS! IS! LLAMA!
                 '(<-  . '~~(<+<=+<sz=+sshzs(..               
                .+<.    '('-~(((((<++(<<((= .                 
                 .--.. ....'.'.'.'..''..'-..

टास्क २

"Hello, world!" println()

टास्क 3

import text/StringTokenizer
import structs/ArrayList
input := stdin readLine() split(' ', false)
(begin, end) := (input[0] toInt(), input[1] toInt())
for (i in begin..end+1) {
    if (i % 2 != 0) { "%d " printf(i) }
}
println()

बहुत सीधा-सादा अमल। इसके अलावा, यह ooc का एक दिलचस्प पहलू दिखाता है: विधि कॉल रिक्त स्थान को डेलिमिटर के रूप में उपयोग करती है, डॉट्स के रूप में नहीं। उदाहरण के लिए, stdin readLine() split(' ', false)ऊपर नोटिस । अधिकांश भाषाओं में, जैसा कि लिखा जाएगा stdin.readLine().split(' ', false), लेकिन ooc का कहना है कि कॉल चेनिंग (कोड उदाहरण के लिए नीचे स्क्रॉल करें) के लिए।

टास्क 3

यह मेरी पसंदीदा ooc सुविधा दिखाता है: मिलान। यह पैटर्न से मेल खाने जैसा है। एक OO भाषा में। बहुत बढ़िया।

import structs/ArrayList
import math/Random

Animal: abstract class {
    makeNoise: abstract func
}

Sheep: class extends Animal {
    init: func
    makeNoise: func {
        "Baaaaaaa!" println()
    }
}

Wolf: class extends Animal {
    init: func
    makeNoise: func {
        "Hooooowl!" println()
    }
}

animals := [Sheep new(), Sheep new(), Sheep new()] as ArrayList<Animal>
badNumber := Random randRange(0, 3)
animals[badNumber] = Wolf new()
animal: Animal

"Enter a number between 0 (inclusive) and 3 (exclusive)" println()
inputNumberString := stdin readLine()
for (chr in inputNumberString) {
    if (!(chr.digit?())) {
        "NUMBER, not CHARACTER! Can't you read!?" println()
        exit(1)
    }
}
inputNumber := inputNumberString toInt()
try {
    animal = animals[inputNumber]
} catch (e: OutOfBoundsException) {
    "I said a number between one and three, you idiot!" println()
    exit(1)
}
"Animal noise:" println()
animal makeNoise()
match (animal) {
    case sheep: Sheep => { "It's a stupid, annoying sheep!" println() }
    case wolf: Wolf => { "AHH! A WOLF! You got eaten. :/ R.I.P." println() }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.