Cuộc tranh chấp jQuery


18

Một thời gian sau sự cố này

một số người trong chúng ta chống lại trật tự ô uế này của jQuery. Đó là một sự hiện diện không lành mạnh, trong đó phải được tiêu diệt . Do đó, tôi kêu gọi bạn, người trung thành với Vương quốc cải cách mới, để tạo ra một chương trình sẽ loại bỏ sự kháng cự đó. Tất cả mã phải được xác thực và tìm kiếm BẤT K and và MỌI dấu vết của jQuery. Và, tất nhiên, việc gửi của bạn cần phải ngắn (đã có một cắt giảm ngân sách khác, và thật không may, nó nằm trong bộ phận lưu trữ). Và nó không thể có nhân vật ô uế.

Để giúp bạn tăng tốc, một nhân vật ô uế là bất kỳ nhân vật nào sau đây : jJqQuUeErRyY$x0. Như đã nói, việc sử dụng các ký tự này bị nghiêm cấm, ngay cả trong chương trình của riêng bạn. Vì vậy, không sử dụng chúng. CSONG chúng tôi ổn với ký hiệu đô la bằng số. Vì vậy, bất cứ điều gì trong mẫu n+(.nn)*$đều ổn (Bạn vẫn không nên sử dụng 0.)

Chương trình / mã / vv của bạn. phải xác nhận một chương trình đầu vào. Nếu nó chứa bất kỳ ký tự ô uế nào , bạn phải xuất ra This programmer is guilty of Heresy. He must be burnt.; nếu không tìm thấy các ký tự như vậy, bạn phải xuất ra Program validated. Clearance level 2 given..

Tiền thưởng và tiền phạt

  • Cá nhân tôi rất ngưỡng mộ nhân vật ~. Cứ hai bạn sử dụng, tôi sẽ cung cấp cho bạn -1 byte. (tức là mọi thứ khác ~đều miễn phí.)
  • Bạn có thể chọn chính xác một ký tự từ loại trừ; sau đó bạn có thể sử dụng ký tự này trong tất cả các trường hợp của nó, TUY NHIÊN: có hình phạt ban đầu + 50% byte và sau đó là hình phạt +5 byte cho mỗi phiên bản của ký tự đó.
  • -90% nếu bạn không sử dụng bất kỳ ký tự nào liền kề jquery(chỉ để siêu an toàn) trong mã nguồn của bạn. Đây là (ngoài ra):iIkKpPsSzZXdDfF
  • -20% nếu, khi được cung cấp một chuỗi không hợp lệ, cùng với việc xuất văn bản đã nói ở trên, bạn thay thế tất cả các ký tự không hợp lệ bằng -cách chạy 1, *với một lần chạy dưới 10 và []với bất kỳ lần chạy nào dài hơn.
  • -50 byte nếu bạn không tìm thấy JavaScript/ihoặc Simplexcó các ký tự làm ô uế.

Thực hiện tham khảo

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
Các Eehạn chế sẽ rất khó khăn ...
LegionMammal978

11
Đợi ... các câu đầu ra chứa các chữ cái ô uế - HYPOCRISY !!!
Mama Fun Roll

6
@molarmanful Chỉ có các chương trình không thể chứa những chữ cái ác này. Chúng tôi có nghĩa là không cản trở lời nói của người đàn ông đối với người khác, thay vào đó, cản trở việc sử dụng các nhân vật đã được phân loại là bất lợi cho chất lượng thánh của lập trình. Those who are blind cannot see, those who are deaf cannot speak. Those who use jQuery cannot be tolerated.
Conor O'Brien


5
-1 để liên tục chỉnh sửa các phần thưởng thử thách.
admBorkBork

Câu trả lời:


20

CJam, 160 139 13,4 byte

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~+}%~

Trên đây là một hexdump có thể được đảo ngược với xxd -r -c 18. Hãy thử trực tuyến.

Mã này bao gồm 142 byte . Nó chứa tổng cộng mười sáu ~ ký tự ( -8 byte ), nhưng không có ký tự liền kề jQuery ( -90% ).

Làm thế nào nó hoạt động

Trận đấu n+(.nn)*$thực sự sôi xuống một chữ số theo sau là một ký hiệu đô la .

Đầu tiên,

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

thêm -94 vào tất cả các điểm mã của chuỗi đó và đánh giá kết quả.

Mã thực thi là:

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.

Điều đó thật tốt. Ồ
Conor O'Brien

Làm tốt lắm. Xin lỗi vì sự đau buồn của tiền thưởng. Không nhận ra rằng nó sẽ có ảnh hưởng bất lợi đến bạn và tất cả
Conor O'Brien

6

Chồn 0,9 , 346-3 = 343 byte

Chương trình dài nhất chưa.

#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).

Hãy thử nó ở đây.

Giải trình

Dòng đầu tiên thực hiện ba điều: 1) xây dựng ngăn xếp với các ký tự bị cấm, 2) đặt một thứ rất cần thiết xvào đúng vị trí (khoảng trống ở cuối) và 3) lặp qua đầu vào, nhảy đến dòng thích hợp .

Dòng thứ hai và thứ tư làm điều tương tự: thay thế mọi khoảng trống trong dòng thành công bằng ký tự phù hợp. Họ nhảy đến dòng tiếp theo ở cuối.

Các dòng thứ ba và thứ năm chỉ cần đẩy chuỗi yêu cầu trên ngăn xếp và in nó ra.


Cooooooooooool!
Conor O'Brien

5

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

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

Bãi rác này được thực hiện bằng cách sử dụng gnuwin32 hexdump. Đảo ngược với 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;

(Tôi bối rối về thứ tự áp dụng tiền thưởng / hình phạt, vì vậy tôi giả sử thứ tự là bằng văn bản.)

Sử dụng ký tự "e" trong eval. Nhờ vào phép thuật đảo ngược chuỗi PHP, điều này quản lý để tránh tất cả các ký tự jquery và gần jquery khác.

Chuỗi đảo ngược chứa mã này (được định dạng cho rõ ràng)

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.';

Vì mã này không có câu lệnh return, evaltrả về null nên <?=evalkhông làm gì cả. (Chỉ là để tránh <?php)


1
Tôi nghĩ bạn có thể đơn giản hóa nó một chút với [jquery$x0][1-9]+(\.[1-9]{2})?\$. Nhân tiện, vốn Xkhông nên được coi là nhân vật ô uế, vì vậy nên thay đổi regex thứ hai thành '/[1-9]+(\.[1-9]{2})?\$|X/'.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

Thêm đầu tiên, sau đó nhân lên. Điểm thực tế: 31,35
ev3commander

4

> <> , 184 byte

"/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

Điều này có thể ngắn hơn một chút với không thể in được, nhưng đây là một phiên bản có thể in chỉ để giải trí. Không làm việc với trình thông dịch trực tuyến vì nó không nằm ngoài bộ mã.

Chương trình này mã hóa cả hai chuỗi là

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

đó là mỗi điểm mã được trừ từ 155. Tương tự,

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

mã hóa các ký tự bị cấm, với các điểm mã được trừ từ 160.

Dòng cuối cùng chỉ đặt tọa độ (forbidden char, 10)thành 1, tạo thành bảng tra cứu. Dòng thứ tư sau đó kiểm tra từng char đầu vào bằng bảng tra cứu, xuất ra thông báo dị giáo nếu 1 người khác tiếp tục. Trên EOF, chúng tôi di chuyển lên để xuất thông báo giải phóng mặt bằng.


1

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

Tôi rất gần gũi, chỉ cần tìm cách thoát khỏi r

Stack không cho phép tôi dán mã vào đây vì có một số ký tự ASCII không in trong chuỗi, vì vậy đây là một hexdump từ 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
Theo thông lệ, bao gồm số byte trong tiêu đề của bạn;)
Conor O'Brien
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.