การเปิดไพ่ jQuery


18

บางครั้งหลังจากเหตุการณ์นี้ ...

นอกจากนี้บางส่วนของเราที่มีต่อนี้เพื่อ defiling ของ jQuery มันเป็นการแสดงตนบริสุทธิ์ซึ่งจะต้องถูกทำลาย ดังนั้นฉันจึงขอเรียกร้องให้คุณผู้ภักดีต่ออาณาจักรใหม่แห่งการปฏิรูปเพื่อสร้างโปรแกรมที่จะกำจัดการต่อต้านดังกล่าว รหัสทั้งหมดจะต้องผ่านการตรวจสอบและค้นหา ANY และทุกๆร่องรอยของ jQuery และแน่นอนว่าการส่งของคุณจะต้องสั้น (มีการตัดงบประมาณอีกครั้งและน่าเสียดายที่อยู่ในแผนกจัดเก็บ) และมันไม่สามารถมีตัวอักษรที่ทำให้สกปรก

เพื่อให้ได้ขึ้นอยู่กับความเร็วเป็นตัวละคร defilingเป็นตัวอักษรใด ๆ jJqQuUeErRyY$x0ต่อไปนี้: ดังที่ได้กล่าวไว้ห้ามมิให้ใช้อักขระเหล่านี้แม้ในโปรแกรมของคุณเอง ดังนั้นอย่าใช้มัน นอกจากนี้เรายังโอเคที่มีเครื่องหมายดอลลาร์เป็นตัวเลข ดังนั้นรูปแบบn+(.nn)*$ใด ๆ ก็โอเค (คุณยังไม่ควรใช้0)

โปรแกรม / รหัส / ฯลฯ ของคุณ ต้องตรวจสอบโปรแกรมอินพุต หากมันมีอักขระที่ทำให้สกปรกใด ๆคุณจะต้องส่งออกThis programmer is guilty of Heresy. He must be burnt.; Program validated. Clearance level 2 given.หากไม่มีตัวละครดังกล่าวจะพบว่าคุณต้องเอาท์พุท

โบนัสและบทลงโทษ

  • ผมเองชื่นชมตัวละครตัวละครตัว~นี้ สำหรับทุก ๆ สองที่คุณใช้ฉันจะให้ -1 ไบต์ (กล่าวคือทุก ๆ~ฟรี)
  • คุณสามารถเลือกอักขระหนึ่งตัวจากการยกเว้น จากนั้นคุณสามารถใช้ตัวละครนี้ในทุกกรณีได้อย่างไร: มีบทลงโทษเริ่มต้นที่ + 50% และจากนั้นมีการลงโทษ 5 ไบต์สำหรับทุกตัวอย่างของตัวละครนั้น
  • -90% ถ้าคุณไม่ใช้อักขระใด ๆ ที่อยู่ติดกับjquery(เพื่อความปลอดภัยสูงสุด) ในซอร์สโค้ดของคุณ เหล่านี้คือ (เพิ่มเติม):iIkKpPsSzZXdDfF
  • -20% ถ้าหากได้รับสตริงที่ไม่ถูกต้องพร้อมกับการแสดงผลข้อความข้างต้นคุณจะแทนที่อักขระที่ไม่ถูกต้องทั้งหมดด้วย-การรัน 1 *ด้วยการรันน้อยกว่า 10 และ[]ด้วยการรันนานกว่านั้น
  • -50 ไบต์หากคุณไม่พบJavaScript/iหรือSimplexมีอักขระที่ทำให้สกปรก

การดำเนินการอ้างอิง

function validate() {
  var str = document.getElementById("input").value;
  var str2 = str.replace(/[jquery0]/gi,"").replace(/x/g,"").replace(/(\d+\.*\d*\d*\$)|\$/g,"$1"); // thanks Doorknob!
  var val;
  if (str2 == str) {
    val = "Program validated. Clearance level 2 given.";
  } else {
    val = "This programmer is guilty of Heresy. He must be burnt.";
  }
  document.getElementById("output").value = val;
}
textarea{width: 600px;}
<textarea id="input" onkeyup="validate()"></textarea>
<br><br>
<textarea id="output" disabled></textarea>


1
Eeข้อ จำกัด จะยาก ...
LegionMammal978

11
เดี๋ยวก่อน ... ประโยคที่ส่งออกมีตัวอักษรที่ทำให้สกปรก - HYPOCRISY !!!
Mama Fun Roll

6
@ Molarmanful มันเป็นเพียงโปรแกรมที่ไม่สามารถมีตัวอักษรที่ชั่วร้ายเหล่านี้ เราหมายถึงไม่ขัดขวางการพูดของผู้ชายที่มีต่อผู้อื่น แต่เป็นอุปสรรคต่อการใช้อักขระที่ถูกจำแนกว่าเป็นอันตรายต่อคุณภาพศักดิ์สิทธิ์ของการเขียนโปรแกรม Those who are blind cannot see, those who are deaf cannot speak. Those who use jQuery cannot be tolerated.
Conor O'Brien


5
-1 สำหรับการแก้ไขโบนัสท้าทายอย่างต่อเนื่อง
AdmBorkBork

คำตอบ:


20

CJam, 160 139 13.4 ไบต์

0000000: 22 cf 97 d9 87 d1 85 82 89 8d d1 db 8d 80 a8 af b3 a3  ".................
0000012: b0 b7 82 8e 80 bd c3 ca 89 85 d6 89 84 80 b2 c6 c7 d1  ..................
0000024: 7e ce d0 cd c5 d0 bf cb cb c3 d0 7e c7 d1 7e c5 d3 c7  ~..........~..~...
0000036: ca d2 d7 7e cd c4 7e a6 c3 d0 c3 d1 d7 8c 7e a6 c3 7e  ...~..~.......~..~
0000048: cb d3 d1 d2 7e c0 c3 7e c0 d3 d0 cc d2 8c 80 80 ae d0  ....~..~..........
000005a: cd c5 d0 bf cb 7e d4 bf ca c7 c2 bf d2 c3 c2 8c 7e a1  .....~..........~.
000006c: ca c3 bf d0 bf cc c1 c3 7e ca c3 d4 c3 ca 7e 90 7e c5  ........~.....~.~.
000007e: c7 d4 c3 cc 8c 80 9d 22 7b 39 33 7e 2b 7d 25 7e        ......."{93~+}%~

ข้างต้นเป็น hexdump xxd -r -c 18ที่สามารถกลับด้วย ลองออนไลน์

รหัสตัวเองประกอบด้วย142 ไบต์ มันมีทั้งหมด 16 ตัวอักษร~ ( -8 ไบต์ ) แต่ไม่มีตัวอักษรที่อยู่ติดกัน jQuery ( -90% )

มันทำงานอย่างไร

การแข่งขันn+(.nn)*$จะทวีความรุนแรงมากตามด้วยเครื่องหมายดอลลาร์

ก่อนอื่น

"<bunch of characters>"{93~+}%~

เพิ่ม-94ให้กับจุดโค้ดทั้งหมดของสตริงนั้นและประเมินผลลัพธ์

รหัสดำเนินการคือ:

q       e# Read all input from STDIN.
9{      e# For each I in [0 ... 8]:
  )s    e#   Increment and cast to string.
  '$+   e#   Append a dollar sign.
  /s    e#   Split the input at occurrences. Flatten the result.
}/

"JQUERY$0"

_el+'x+ e# Append a lowercase copy and "x" to that string.
&       e# Intersect with the modified input.

"This programmer is guilty of Heresy. He must be burnt."
"Program validated. Clearance level 2 given."

?       e# Ternary if; select the corresponding message.

ดีแล้ว. ว้าว.
Conor O'Brien

ทำได้ดีมาก ขออภัยสำหรับความเศร้าโศกของโบนัส ไม่ทราบว่าจะมีผลเสียต่อคุณและทุกคน
Conor O'Brien

6

Minkolang 0.9 , 346-3 = 343 ไบต์

โปรแกรมที่ยาวที่สุด

#66*68*d5*2:88*5+d5+d7+d1+d3+d4+6[3i+c48*+]2c"N"11-p(od4&k13w35*[dic=,5&kk11w] )
 725*35*48*68*3+5[66+c2~g2p]27*48*1-d2+d6+d8+5[9c2~g2p]37*67*d8+3[67+c2~g2p]55*57*2[77+c2~g2p]X11-2w
"This p og amm   is g ilt  of H   s . H  m st b  b  nt."(O).
 X2546*3[66+c2~g4p]44*d6+47*d3+d2+d8+6[9c2~g4p]X11-4w
"P og am validat d. Cl a anc  l v l 2 giv n."(O).

ลองที่นี่

คำอธิบาย

บรรทัดแรกทำสามสิ่ง: 1) สร้างสแต็กด้วยตัวอักษรต้องห้าม 2) ใส่สิ่งที่จำเป็นมาก xในที่ที่ถูกต้อง (ช่องว่างที่ท้าย) และ 3) วนผ่านอินพุตเพื่อข้ามไปยังบรรทัดที่เหมาะสม .

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

บรรทัดที่สามและห้าเพียงกดสตริงที่ต้องการบนสแต็กและพิมพ์ออกมา


Cooooooooooool!
Conor O'Brien

5

PHP, (204 * 1.5 + 5) * .1 = 31.1

<?=eval(~šœ—.ß..š˜ ’ž‹œ—×ØФ•ŽŠš.†££Û‡Ï¢Ð–ØÓ..š˜ .š.“žœš×ØФÎÒÆ¢Ô×££Ñ¤ÎÒÆ¢„Í‚ÖÀ££ÛÐØÓÝÝÓÛž.˜‰¤Î¢ÖÖÀØ«—–Œß...˜.ž’’š.ß–Œß˜Š–“‹†ß.™ß·š.šŒ†Ñß·šß’ŠŒ‹ß.šß.Š.‘‹ÑØÅد..˜.ž’߉ž“–›ž‹š›Ñß¼“šž.ž‘œšß“š‰š“ßÍߘ–‰š‘ÑØÄ);

การถ่ายโอนข้อมูลนี้ถูกสร้างขึ้นโดยใช้ hexdumpGnuWin32 hex2binย้อนกลับด้วย

00000000: 3C 3F 3D 65 76 61 6C 28 - 7E 9A 9C 97 90 DF 8F 8D |<?=eval(~       |
00000010: 9A 98 A0 92 9E 8B 9C 97 - D7 D8 D0 A4 95 8E 8A 9A |                |
00000020: 8D 86 A3 A3 DB 87 CF A2 - D0 96 D8 D3 8F 8D 9A 98 |                |
00000030: A0 8D 9A 8F 93 9E 9C 9A - D7 D8 D0 A4 CE D2 C6 A2 |                |
00000040: D4 D7 A3 A3 D1 A4 CE D2 - C6 A2 84 CD 82 D6 C0 A3 |                |
00000050: A3 DB D0 D8 D3 DD DD D3 - DB 9E 8D 98 89 A4 CE A2 |                |
00000060: D6 D6 C0 D8 AB 97 96 8C - DF 8F 8D 90 98 8D 9E 92 |                |
00000070: 92 9A 8D DF 96 8C DF 98 - 8A 96 93 8B 86 DF 90 99 |                |
00000080: DF B7 9A 8D 9A 8C 86 D1 - DF B7 9A DF 92 8A 8C 8B |                |
00000090: DF 9D 9A DF 9D 8A 8D 91 - 8B D1 D8 C5 D8 AF 8D 90 |                |
000000a0: 98 8D 9E 92 DF 89 9E 93 - 96 9B 9E 8B 9A 9B D1 DF |                |
000000b0: BC 93 9A 9E 8D 9E 91 9C - 9A DF 93 9A 89 9A 93 DF |                |
000000c0: CD DF 98 96 89 9A 91 D1 - D8 C4 29 3B             |          );|
000000cc;

(ฉันสับสนเกี่ยวกับลำดับที่จะใช้โบนัส / การลงโทษดังนั้นฉันจึงถือว่าคำสั่งเป็นลายลักษณ์อักษร)

ใช้อักขระ "e" ในรูปแบบ eval ต้องขอบคุณเวทย์มนตร์สตริงผกผันของ PHP ทำให้สามารถหลีกเลี่ยงอักขระ jquery และ jquery อื่น ๆ ทั้งหมดได้

สตริงคว่ำมีรหัสนี้ (จัดรูปแบบเพื่อความชัดเจน)

echo preg_match('/[jquery\\$x0]/i',
  preg_replace('/[1-9]+(\\.[1-9]{2})?\\$/',"", $argv[1]))
  ? 'This programmer is guilty of Heresy. He must be burnt.'
  : 'Program validated. Clearance level 2 given.';

เนื่องจากรหัสนี้ไม่มีคำสั่งevalreturn ส่งคืน null ดังนั้นจึง<?=evalไม่ทำอะไรเลย (มันเป็นเพียงเพื่อหลีกเลี่ยง<?php)


1
ฉันคิดว่าคุณสามารถลดความซับซ้อนมัน bit กับและ[jquery$x0] [1-9]+(\.[1-9]{2})?\$โดยวิธีการที่เงินทุนXไม่ควรได้รับการพิจารณา defiling ตัวอักษรดังนั้น regex '/[1-9]+(\.[1-9]{2})?\$|X/'สองควรจะมีการเปลี่ยนแปลงไป
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

เพิ่มก่อนจากนั้นจึงคูณ คะแนนจริง: 31.35
ev3commander

4

> <> , 184 ไบต์

"/6VO+K;[.N'G|(p
~<.1+f9o*-21-*5-1' ';!?l<"K),4):.{%:/27:'67m{X/6:):-86{/6%6/{i{42%6-m"
f +1.>"m'-)&9{69{'(&.{6S{m"'"(6)6S{5,{"'"'/2&4{(2{)6..:)4,)+{(23G"8
!^ag?/i:1+?
p>l?!^1' '5*@@-a

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

โปรแกรมนี้เข้ารหัสสตริงทั้งสองเป็น

G32({+),4):..6){2({4&2/'"{,5{S6)6("m{S6{.&('{96{9&)-'m
K),4):.{%:/27:'67m{X/6:):-86{/6%6/{i{42%6-m

ซึ่งแต่ละจุดของรหัสถูกลบออกจาก 155 ในทำนองเดียวกัน

6V/O+K;[.N'G|(p

เข้ารหัสอักขระที่ต้องห้ามด้วยรหัสจุดที่ถูกลบออกจาก 160

บรรทัดสุดท้ายเพียงตั้งค่าพิกัด(forbidden char, 10)เป็น 1 สร้างตารางการค้นหา จากนั้นบรรทัดที่สี่จะตรวจสอบถ่านอินพุตแต่ละรายการโดยใช้ตารางการค้นหาและแสดงข้อความนอกรีตหากยังมีอีก 1 รายการดำเนินการต่อ บน EOF เราเลื่อนขึ้นเพื่อแสดงข้อความกวาดล้าง


1

"Javascript" 840 * 2 + 14 * 5 = 1750;)

ฉันอยู่ใกล้มาก ๆ แค่ต้องหาวิธีกำจัด r's

สแต็คไม่ได้ให้ฉันวางรหัสในที่นี้เนื่องจากมีอักขระ ASCII ที่ไม่พิมพ์หลายตัวในสตริงดังนั้นนี่คือ hexdump จาก xxd

0000000: 6576 616c 2868 3d27 272c 643d 5b7b 613a  eval(h='',d=[{a:
0000010: 5b2e 2e2e 2770 5b6c 1a6d 375e 695d 6f67  [...'p[l.m7^i]og
0000020: 5f68 6e28 5d6c 5f5b 6e5f 3f66 5f67 5f68  _hn(]l_[n_?f_g_h
0000030: 6e22 1c6d 5d6c 6327 5d2c 623a 367d 2c7b  n".m]lc'],b:6},{
0000040: 613a 5b27 7e27 5d2c 623a 2d31 347d 2c7b  a:['~'],b:-14},{
0000050: 613a 5b2e 2e2e 276e 1c23 356d 286d 6c5d  a:[...'n.#5m(ml]
0000060: 371c 2929 5d69 5e5f 2864 6b6f 5f6c 7328  7.))]i^_(dko_ls(
0000070: 5d69 6729 646b 6f5f 6c73 5c27 2c28 2b28  ]ig)dko_ls\',(+(
0000080: 2e28 646d 1c26 5e69 5d6f 675f 686e 285c  .(dm.&^i]og_hn(\
0000090: 5c69 5e73 285b 275d 2c62 3a36 7d2c 7b61  \i^s(['],b:6},{a
00000a0: 3a5b 277e 272c 277e 275d 2c62 3a2d 3134  :['~','~'],b:-14
00000b0: 7d2c 7b61 3a5b 2e2e 2e27 5f68 5e3d 6263  },{a:[...'_h^=bc
00000c0: 665e 226d 2326 1e22 1c1d 696f 6e1c 2328  f^"m#&."..ion.#(
00000d0: 705b 6622 686f 6666 1b37 1e22 1c1d 6368  p[f"hoff.7."..ch
00000e0: 1c23 2870 5b66 2223 286d 275d 2c62 3a36  .#(p[f"#(m'],b:6
00000f0: 7d2c 7b61 3a5b 277e 275d 2c62 3a2d 3134  },{a:['~'],b:-14
0000100: 7d2c 7b61 3a5b 2e2e 2e27 6663 6e22 1c1c  },{a:[...'fcn"..
0000110: 2328 6c5f 705f 6c6d 5f22 2328 6469 6368  #(l_p_lm_"#(dich
0000120: 221c 1c23 2867 5b6e 5d62 2229 275d 2c62  "..#(g[n]b")'],b
0000130: 3a36 7d2c 7b61 3a5b 277e 275d 2c62 3a2d  :6},{a:['~'],b:-
0000140: 3335 7d2c 7b61 3a5b 2e2e 2e27 6444 6b4b  35},{a:[...'dDkK
0000150: 6f4f 5f3f 6c4c 7353 1e2a 7257 7656 1e22  oO_?lLsS.*rWvV."
0000160: 391b 2227 5d2c 623a 367d 2c7b 613a 5b2e  9."'],b:6},{a:[.
0000170: 2e2e 275b 312d 395d 5b31 2d39 5d5c 5c2e  ..'[1-9][1-9]\\.
0000180: 293f 5b27 5d2c 623a 312d 317d 2c7b 613a  )?['],b:1-1},{a:
0000190: 5b2e 2e2e 272b 5c27 3357 2329 6123 391c  [...'+\'3W#)a#9.
00001a0: 275d 2c62 3a36 7d2c 7b61 3a5b 277e 275d  '],b:6},{a:['~']
00001b0: 2c62 3a2d 3436 7d2c 7b61 3a5b 2e2e 2e27  ,b:-46},{a:[...'
00001c0: 6c69 616c 5b67 1a70 5b66 635e 5b6e 5f5e  lial[g.p[fc^[n_^
00001d0: 281a 3d66 5f5b 6c5b 685d 5f1a 665f 705f  (.=f_[l[h]_.f_p_
00001e0: 661a 2c1a 6163 705f 6828 1c34 1c4e 6263  f.,.acp_h(.4.Nbc
00001f0: 6d1a 275d 2c62 3a36 7d2c 7b61 3a5b 277e  m.'],b:6},{a:['~
0000200: 275d 2c62 3a2d 3134 7d2c 7b61 3a5b 2e2e  '],b:-14},{a:[..
0000210: 2e27 6c69 616c 5b67 675f 6c1a 636d 1a61  .'lial[gg_l.cm.a
0000220: 6f63 666e 731a 6960 1a42 5f6c 5f6d 7328  ocfns.i`.B_l_ms(
0000230: 1a42 5f1a 676f 6d6e 1a5c 5c5f 1a5c 5c6f  .B_.gomn.\\_.\\o
0000240: 6c68 6e28 1c23 275d 2c62 3a36 7d5d 2e6d  lhn(.#'],b:6}].m
0000250: 6170 2864 3d3e 2876 3d27 272c 773d 642e  ap(d=>(v='',w=d.
0000260: 612e 6d61 7028 633d 3e53 7472 696e 672e  a.map(c=>String.
0000270: 6672 6f6d 4368 6172 436f 6465 2863 2e63  fromCharCode(c.c
0000280: 6861 7243 6f64 6541 7428 292b 642e 6229  harCodeAt()+d.b)
0000290: 292c 772e 666f 7245 6163 6828 287a 2c69  ),w.forEach((z,i
00002a0: 2c61 293d 3e7b 6966 2869 2532 2976 3d76  ,a)=>{if(i%2)v=v
00002b0: 2e63 6f6e 6361 7428 615b 692d 315d 2e63  .concat(a[i-1].c
00002c0: 6f6e 6361 7428 7a29 297d 292c 762e 636f  oncat(z))}),v.co
00002d0: 6e63 6174 2877 2e6c 656e 6774 6825 323f  ncat(w.length%2?
00002e0: 772e 706f 7028 293a 2727 2929 292c 642e  w.pop():''))),d.
00002f0: 666f 7245 6163 6828 287a 2c69 2c61 293d  forEach((z,i,a)=
0000300: 3e7b 6966 2869 2532 2968 3d68 2e63 6f6e  >{if(i%2)h=h.con
0000310: 6361 7428 615b 692d 315d 2e63 6f6e 6361  cat(a[i-1].conca
0000320: 7428 7a29 297d 292c 682e 636f 6e63 6174  t(z))}),h.concat
0000330: 2864 2e6c 656e 6774 6825 323f 642e 706f  (d.length%2?d.po
0000340: 7028 293a 2727 2929 0a                   p():'')).

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