ติดตั้งล่ามไร้ประโยชน์ [ปิด]


12

งานของคุณคือสร้างล่ามให้เป็นภาษาที่ไร้ประโยชน์ :

นี่คือความต้องการการทำงาน:

  • คำสั่งที่อธิบายทั้งหมดควรได้รับการยอมรับจากล่าม
  • NO., NOOPและINCLUDE-xxxจะต้องได้รับเกียรติ
  • DONTUSEME(n) ต้องมีวันที่ฐานเพื่อให้สามารถกำหนดค่าให้กับสิ่งที่สมเหตุสมผลสำหรับการทดสอบได้ง่ายขึ้น
  • INCLUDE-xxxจะต้องสามารถสร้างคำสั่งใด ๆ ที่มีความน่าจะเป็นที่เท่าเทียมกันโดยประมาณ ถ้ามันสร้าง a DONTUSEME(n)เขาควรสุ่มเลือกค่าเล็กน้อยสำหรับ n
  • DONTUSEME(n)หน้าต่างควรอยู่รอดจากNO.คำสั่ง เคล็ดลับ: วางกระบวนการใหม่สำหรับหน้าต่างเหล่านั้น
  • BOOM!และKABOOM!จะต้องทำอะไรบางอย่างที่ไม่ดีและน่ากลัวและจะต้องเลวร้ายยิ่งกว่าKABOOM! BOOM!แต่สิ่งนี้จะต้องไม่ถูกนำมาใช้อย่างจริงจังเกินไปดังนั้นจึงไม่ควรเป็นสิ่งที่ทำลายล้างทำลายหรือทำลายยาก กรุณาอย่าทำและอย่าทำให้คำสั่งเหล่านี้เรียกใช้rm -rf \คำสั่งรันการวางระเบิดติดตั้งมัลแวร์ข้อมูลที่เสียหายในระบบไฟล์หรือโพสต์หรือดาวน์โหลดเนื้อหาที่ไม่เหมาะสมจากอินเทอร์เน็ตหรือสิ่งอื่นใดที่ไม่เหมาะสมอย่างชัดเจน
  • TURINGVSALONZOควรทำงานราวกับว่ามันได้ทำในสิ่งที่ควรทำ เคล็ดลับ: ตัดสินใจแบบสุ่มว่าจะนอนนาน ๆ หรือสุ่มเวลาสั้น ๆ หรือตลอดไป
  • ทุกคำแนะนำที่กำหนดไว้ล่วงหน้าอื่น ๆ ควรจะทำอะไรบางอย่างอื่นนอกเหนือจากคำแนะนำดังกล่าวข้างต้นและแตกต่างกันไปอีก แต่ไม่เคยสิ่งที่เลวร้ายยิ่งกว่าหรือBOOM! KABOOM!สิ่งที่พวกเขาทำนั้นขึ้นอยู่กับคุณ แต่การนำไปใช้งานที่เรียบง่ายจะส่งข้อความแสดงข้อผิดพลาดหรือข้อความอื่น ๆ
  • คุณควรจัดให้มีวิธีที่ง่ายสำหรับผู้ใช้ในการจัดเตรียมโปรแกรมที่จะเรียกใช้โดยล่าม เช่นการอ่านข้อความธรรมดาจากไฟล์หรือจากstdinก็โอเค การอ่านจากไฟล์ที่เข้ารหัสที่อื่นในอินเทอร์เน็ตไม่ใช่

ไม่จำเป็น:

  • คุณอาจคิดค้นคำสั่งใหม่บางคำสั่งหากคุณต้องการ แต่ควรอยู่ภายใต้กฎเดียวกันกับคำสั่งอื่น อย่าใช้วิธีนี้เพื่อหลีกเลี่ยงข้อ จำกัด ในBOOM!และหรือความพ่ายแพ้KABOOM! DONTUSEME(n)และถ้าคุณสร้างคำสั่งใหม่อธิบายสิ่งที่พวกเขาทำ
  • คุณควรคิดถึงสิ่งที่ล่ามจะทำอย่างไรหากมันได้รับอินพุตด้วยคำสั่งที่ไม่รู้จัก (หรือแม้แต่การสุ่มแบบสุ่มไบต์ที่เข้าใจไม่ได้)
  • แม้ว่าจะไม่มีคำสั่งใดที่จะเอาชนะDONTUSEME(n)คำสั่งได้ แต่คุณอาจเพิ่มสวิตช์ฆ่ามัน อย่าเปิดเผยสิ่งนั้นในภาษา

เรามีข้อกำหนดที่ไม่สามารถใช้งานได้บางอย่างเพื่อหลีกเลี่ยงการใช้ในทางที่ผิด:

  • ผลงานของคุณจะต้องสมบูรณ์และมีการลงทะเบียนอัตโนมัติให้มากที่สุด ซึ่งหมายความว่าไม่ควรเป็นเพียงตัวติดตั้งหรือโปรแกรมที่ไม่สมบูรณ์ ด้วยวิธีนี้การดาวน์โหลดและการใช้ไลบรารีเช่น jQuery หรือแพ็คเกจจากศูนย์กลาง maven นั้นใช้ได้ แต่การดาวน์โหลดรหัสและแพ็คเกจจากเซิร์ฟเวอร์ที่กำหนดเองของคุณนั้นไม่สามารถทำได้
  • ข้อมูลของคุณไม่ควรได้รับเนื้อหาใด ๆ จากหน้านี้หรือจากมิรเรอร์หรือสำเนาของหน้านี้เพื่อที่จะทำการสะท้อนบางอย่างหรือเพื่อจุดประสงค์อื่น นี่เป็นสิ่งจำเป็นเพื่อหลีกเลี่ยงบางโปรแกรมที่พยายามอ่านคำตอบของผู้เข้าแข่งขันคนอื่นหรือพยายามขัดขวางคำถามหรือคำตอบไม่ว่าด้วยวิธีใด
  • ล่ามของคุณควรไม่เปลี่ยนรูปและไม่แก้ไขตนเองหรือแก้ไขไฟล์อินพุต แต่การสร้างสำเนาของล่ามหรือไฟล์อินพุตกลายพันธุ์โดยไม่เปลี่ยนต้นฉบับนั้นก็โอเค

และสุดท้ายพิจารณาว่า:

  • โปรแกรมในคำตอบนั้นคาดว่าจะไร้ประโยชน์เลยแม้ว่าจะเป็นไปตามนั้นก็ตาม
  • ภาษานี้มีจุดประสงค์ที่ไม่ชัดเจนมากนักและผู้ตอบมีเสรีภาพมากมายในการใช้และมีแรงจูงใจที่จะพาพวกเขาไป
  • ความต้องการและการนำไปใช้งานที่เป็นไปได้นั้นมีหลายประเด็น
  • วัตถุประสงค์ของเกมนี้คือการได้รับความสนุกสนานและความคิดสร้างสรรค์

จากนั้นนี่คือการและคำตอบที่ได้รับการโหวตมากที่สุดสอดคล้องกับกติกาการชนะอย่างเต็มที่! ดังนั้นคุณไม่จำเป็นต้องตีกอล์ฟหรือทำให้งงงวยคำตอบของคุณ (แต่คุณอาจทำอย่างนั้นถ้าคุณต้องการ) เพียงให้แน่ใจว่าได้โพสต์สิ่งที่เป็นต้นฉบับและสร้างสรรค์เพื่อรับ upvotes เช่นโปรดอย่าโพสต์รายการที่น่าเบื่อ


คุณหมายถึง `rm -rf 'หรือไม่
Simon Kuang

คำตอบ:


8

TI-BASIC

มีปุ่มฆ่าDONTUSEMEคุณสามารถคิดได้ว่าอันไหนมันคือ? :)

:Lbl 1
:Input Str1
:If Str1="NO."
:Pause
:If Str1="FAIL"
:Disp "OBSOLETE. WHAT A FAIL."
:If Str1="NOT"
:Disp "USING NOT IS HIGHLY DISCOURAGED!"
:If Str1="NEVER"
:get(Police,911)
:If Str1="IDK"
:Disp LLLundefined
:If Str1="BOOM!"
:Disp "rm -rf \"
:If Str1="KABOOM!"
:send(virus)
:If Str1="QWAOZAPWQFUOA"
:Disp "SKIPPING QWAO... UNIMPLEMENTED"
:If Str1="WUT?"
:dayOfWk(1)
:If Str1="WHERE?"
:Disp "NON-EXISTENT. SKIPPED."
:If Str1="HOW?"
:++
:If sub(Str1,1,9)="DONTUSEME"
:Then
:While 1
:sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(sin(e)
:End
:End
:If Str1="ILLEGAL"
:Archive X
:If Str1="GODEXISTS"
:Disp "GOD EXISTS, PROVEN BY LAW."
:If Str1="WINDOWS"
:Disp "UNABLE TO OPEN START MENU!"
:If Str1="NOOP"
:Lbl 0
:If sub(Str1,1,8)="INCLUDE-"
:sub(Str1,9,length(Str1-8))
:If Str1=Ans
:Then
:If not(rand)
:Goto 0
:End
:If Str1="TURINGVSALONZO"
:Then
:"+"→Str0
:randInt(5,10)
:While Ans
:Ans-1
:If fpart(Ans,4)4=3
:Str0+"+"→Str0
:If fpart(Ans,4)4=2
:Str0+"-"→Str0
:If fpart(Ans,4)4=1
:Str0+">"→Str0
:If fpart(Ans,4)4=0
:Str0+"."→Str0
:End
:Disp "0"
:"?utm_campaign=0"
:End
:Goto 1

2
นั่น:Goto 1หมายความว่าBOOM!เป็นเพียงการไม่เลือกใช่หรือไม่
Victor Stafusa

1
@VictorStafusa ใช่ หลังจากพิจารณาอีกแล้วฉันเปลี่ยนมันเป็น `rm -rf 'เพราะคุณบอกฉัน (ไม่ใช่) เป็น
Timtech

INCLUDE-ผมไม่คิดว่าคุณดำเนินการ
lirtosiast

9

HTML + Javascript + jQuery + jQuery UI

ควรป้อนอินพุตในพื้นที่ข้อความและควรจัดรูปแบบเป็นคำสั่งแต่ละคำในบรรทัด คำสั่งไม่คำนึงถึงขนาดตัวพิมพ์ คำสั่งทั้งหมดถูกนำไปใช้อย่างสมบูรณ์ ฉันหวังว่าคุณจะสนุก

คุณสามารถลองได้ที่http://jsfiddle.net/bCBfk/

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
    <title>Useless interpreter</title>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
    <style type="text/css">
      textarea { height: auto; }
      .badshit { color: red; }
      .ui-dialog-titlebar-close { display: none; }
    </style>
    <script type="text/javascript">
      String.prototype.startsWith = function(x) {
        return this.substring(0, x.length) === x;
      };
      String.prototype.endsWith = function(x) {
        return this.substr(this.length - x.length, x.length) === x;
      };

      var npe = "<pre>java.lang.NullPointerException\n"
          + "       at org.esolangs.wiki.useless.memorymodel.ExistentObjectPool.findObject(ExistentObjectPool.java:684)\n"
          + "       at org.esolangs.wiki.useless.interpreter.WhereInstruction.visit(WhereInstruction.java:29)\n"
          + "       at org.esolangs.wiki.useless.interpreter.UselessProgram.run(UselessProgram.java:413)\n"
          + "       at org.esolangs.wiki.useless.interpreter.Main.main(Main.java:53)</pre>";

      var wut = navigator.userAgent + " - " + navigator.language + " - " + navigator.platform + " - Ii?".toLocaleUpperCase();

      var wut2 = "";
      for (var c = wut.length - 1; c >= 0; c--) {
          wut2 += wut.charAt(c);
      }

      var popupMasterMind;
      function killIt() {
        clearInterval(popupMasterMind);
        $(".dontuseme").remove();
        popupMasterMind = null;
      }

      function spawn() {
        var x = $("<div class='dontuseme' title=''><p></p></div>");
        $("body").append(x);
        x.dialog();
        var bw = $("body").innerWidth();
        var bh = $("body").innerHeight();
        if (bh < 500) bh = 500;
        var xw = x.width();
        var xh = x.height();
        x.parent().css({left: Math.random() * (bw - xw) + "px", top: Math.random() * (bh - xh) + "px"});
      }

      function dontuseme() {
        if (popupMasterMind) return;
        spawn();
        popupMasterMind = setInterval(spawn, 700);
      }

      var hasOutput = false;
      function clearOutput() {
        $("#output").empty();
        hasOutput = false;
        $("#cc").hide();
      }

      function out(a) {
        $("#output").append($(a));
        hasOutput = true;
      }

      function finish() {
        $("#running").hide();
        $("#bt").show();
        if (hasOutput) $("#cc").show();
      }

      var annoyingUser = false;
      function swap() {
        annoyingUser = true;
        $("#everything").toggle();
        setTimeout(swap, 800);
      }

      function randomString() {
        var r = "";
        var f = Math.floor(Math.random() * 12) + 8;
        for (var i = 0; i < f; i++) {
          r += "ABCDEFGHIJKLMNOPQRSTUVWXYZ.!?0123456789".charAt(Math.floor(Math.random() * 39));
        }
        return r;
      }

      var instructions;
      function includeInstruction(name) {
        name = name.toUpperCase();
        if (instructions[name]) return; // Do not add it twice or overwrite existing instructions.
        var array = [];
        for (var e in instructions) {
          array.push(e);
        }
        var rand = Math.floor(Math.random() * array.length);
        //alert(name + ": " + array[rand]);
        instructions[name] = instructions[array[rand]];
      }

      // DONTUSEME(n) are special cases handled elsewhere.
      instructions = {
        "FAIL": function() { out("<p class='badshit'>Warning: The &lt;blink&gt; tag is obsolete.</p>"); if (!annoyingUser) swap(); return "next"; },
        "NOT": function() { out("<p class='badshit'>Warning: The NOT instruction is discouraged because it breaks yor Useless program.</p>"); return "quit"; },
        "NEVER": function() { out("<pre>Wild MISSINGNO. appeared!</pre>"); return "next"; },
        "IDK": function() { out("<pre>" + {}.idk + "</pre>"); return "next"; },
        "BOOM!": function() { $("#everything").empty(); return "quit"; },
        "KABOOM!": function() { window.location = "http://answers.yahoo.com/question/index?qid=20110816062515AANqygl"; return "quit"; },
        "NO.": function() { finish(); return "quit"; },
        "QWAOZAPWQFUOA": function() { out("<p class='badshit'>Sorry, I could not understand <a href='https://www.google.com.br/#q=women+psychology+and+behaviour'>this</a>.</p>"); return "next"; },
        "WUT?": function() { out("<p>" + wut2 + "</p>"); return "next"; },
        "WHERE?": function() { out(npe); return "next"; },
        "HOW?": function() { out("<p class='badshit'>Regular expression parser failed for HTML. Cause: \"ZALGO\"</p>"); return "next"; },
        "ILLEGAL": function() { out("<pre>codegolfer is not in the sudoers file.  This incident will be reported</pre>"); return "next"; },
        "GODEXISTS": function() { out("<p>'GOD' spelled backwards is 'DOG'. A DOG is an animal that does not exists, and by backwarding this, we conclude that GOD exists and is not an animal.</p>"); return "next"; },
        "WINDOWS": function() { out("<p><img width='640' height='400' src='http://upload.wikimedia.org/wikipedia/commons/3/3b/Windows_9X_BSOD.png' alt='Sorry, this optional instruction was not implemented. Please, install the service pack.'></p>"); return "next"; },
        "NOOP": function() { return "next"; },
        "TURINGVSALONZO": function() {
          var r = Math.random() * 10;
          if (r < 2) return "next";
          if (r < 7) return "t" + (Math.random() * 14 + 1) * 1000;
          if (r < 9) return "t" + (Math.random() * 50 + 10) * 60 * 1000;
          return "quit";
        },
        "42": function() {
          out("<p>Calculating the answer of the life, the universe and everything.</p>");
          out("<p>Estimated time is 7.5 million years.</p>");
          out("<p>Don't you want to briefly take a coffe while you wait? It will not take long, I promise.</p>");
          return "quit";
        },

        // This is special, as it needs a (surprising) useless parameter, it can't be acessed directly without prior processing, this is why it is lowercase.
        "dontuseme": function() { dontuseme(); return "next"; },

        // This is special. If the INCLUDE-xxx generates a INCLUDE-yyy instruction, the yyy instruction will have an unknown random generated name.
        // Since yyy is random and unknown, it probably won't appear in the input source code, but implement it regardless.
        "include-random": function() { includeInstruction(randomString()); return "next"; }
      };

      function bad(line) {
        //alert(line);
        out("<p class='badshit'>Syntax error: </p>");
      }

      function beyondEnd() {
        out("<p class='badshit'>Unrecoverable error: Tried to execute code beyond the end or program.</p>");
      }

      function interpretInstruction(lines, idx) {
        if (idx >= lines.length) { beyondEnd(); return; }

        // The toUpperCase serves two purposes: Making the language case-insensitive and hiding private implementations as lowercase instructions.
        ins = lines[idx].trim().toUpperCase();

        var result;

        // Special handling for parsing DONTUSEME(n)
        if (ins.startsWith("DONTUSEME(") && ins.endsWith(")")) {
          try {
            parseInt(ins.substring("DONTUSEME(".length, ins.length - 1));
          } catch (e) {
            bad(ins);
            return;
          }
          ins = "dontuseme";

        // Special handling for INCLUDE-xxx
        } else if (ins.startsWith("INCLUDE-") && ins.length > 8) {
          var name = ins.substring(8);
          includeInstruction(name);
          ins = "NOOP"; // Already executed, follow-up as noop.
        }

        // Execute the instruction.
        var f = instructions[ins];
        if (!f) { bad(ins); return; }
        var result = f();

        // Move on.
        if (result === "quit") return;
        var toWait = result === "next" ? 0 : parseInt(result.substring(1));
        var ii = idx + 1;
        setTimeout(function() {
          interpretInstruction(lines, ii);
        }, toWait);
      }

      function startInterpreter() {
        $("#bt").hide();
        $("#cc").hide();
        $("#running").show();
        var src = $("#input").val();
        var lines = src.split('\n');
        interpretInstruction(lines, 0);
      }

      $(document).ready(function() {
        $("#bt").click(startInterpreter);
        $("#cc").click(clearOutput);
      });
    </script>
  </head>
  <body>
    <div id="everything">
      <p>Type here your program input:</p>
      <textarea id="input" style="width: 400px; height: 150px;"></textarea>
      <p>
        <button id="bt">Run the program</button>
        <span id="running" style="display: none;">Running the program...</span>
      </p>
      <p>Here is the program output:</p>
      <p id="output" class="useless"></p>
      <button id="cc" style="display: none;">Clear the output</button>
    </div>
  </body>
</html>

มันมีหนึ่งคำสั่งใหม่:

มันเป็น42คำสั่งที่คำนวณคำตอบของชีวิตจักรวาลและทุกสิ่ง สิ่งที่แปลกประหลาดเพียงอย่างเดียวคือใช้เวลา 7.5 ล้านปีจึงจะเสร็จ

สปอยเลอร์อื่น ๆ :

รายการนี้มีคุณสมบัติหลายประการ:

  • คุณจะเกลียดFAILคำสั่งจริงๆ
  • BOOM!จะทำให้คุณ "หน่วยปฏิบัติงาน" ผิดพลาด อย่างน้อยที่สุดหน้าต่างDONTUSEME(n)ก็สามารถอยู่รอดได้
  • KABOOM! เป็นอันตรายต่อโลกในแง่ร้ายหลายประการ
  • DONTUSEME(n)เปิดหน้าต่างที่ว่างเปล่าที่ไม่มีขีด จำกัด เสมอหนึ่งครั้งในแต่ละ 0.8 วินาที แต่มีสวิตช์ฆ่าที่ซ่อนอยู่
  • DONTUSEME(n)รอดNO., และแม้กระทั่งFAIL BOOM!ฉันไม่สามารถทำให้มันรอดได้KABOOM!แม้ว่า เหตุผลก็คือหน้าต่างป๊อปอัปจะไม่ทำงานเนื่องจากนี่ไม่ใช่ผลลัพธ์ของการคลิก (และป๊อปอัปที่สร้างโดยวิธีอื่นจะถูกแบนนานในเบราว์เซอร์หลัก ๆ ทั้งหมด) และไม่สามารถใช้ iframe ได้เช่นกันเนื่องจากการละเมิดนโยบายต้นกำเนิดเดียวกัน .
  • INCLUDE-xxxสามารถสร้างคำสั่งใด ๆ รวมถึงDONTUSEME(n)หรือINCLUDE-yyyคำสั่ง อื่น
  • หากINCLUDE-xxxสร้างINCLUDE-yyyคำสั่งyyyชื่อจะถูกสร้างขึ้นแบบสุ่ม หากคุณคว้าชื่อของคำสั่งที่สร้างด้วย firebug หรือสิ่งที่คล้ายกันคุณสามารถใช้มันได้
  • มันจัดการไวยากรณ์ผิดรูปแบบและการป้อนข้อมูลที่ไม่สมบูรณ์หรือว่างเปล่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.