Xây dựng trình duyệt XKCD bị lỗi


75

Thử thách

Cho số lượng truyện tranh XKCD, xuất văn bản tiêu đề của truyện tranh đó (văn bản di chuột).

Tuy nhiên, chương trình phải đưa ra một lỗi khi đưa ra các số 859hoặc 404.

Quy tắc

Con số đưa ra sẽ luôn là một truyện tranh hiện có (ngoại trừ 404).

Chương trình của bạn không được ném lỗi cho bất kỳ số nào khác ngoài 859hoặc 404.

Để tham khảo, truyện tranh 404không tồn tại và 859là:

Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;"''{<<[' this mouseover text."

Rút ngắn Url không được phép. Bạn có thể sử dụng internet để có được văn bản tiêu đề.

Ví dụ

Input > Output
1642 > "That last LinkedIn request set a new record for the most energetic physical event ever observed. Maybe we should respond." "Nah."
1385 > ::PLOOOOSH:: Looks like you won't be making it to Vinland today, Leaf Erikson.
1275 > If replacing all the '3's doesn't fix your code, remove the 4s, too, with 'ceiling(pi) / floor(pi) * pi * r^floor(pi)'. Mmm, floor pie.
1706 > Plus, now I know that I have risk factors for elbow dysplasia, heartworm, parvo, and mange.

Tiền thưởng

Tôi sẽ trao phần thưởng cho câu trả lời ngắn nhất thất bại trong truyện tranh 859 vì nó được viết kém thay vì kiểm tra số.

Chương trình của bạn có thể phá vỡ các văn bản thay thế khác (chẳng hạn như 744) với điều kiện chúng có dấu ngoặc đơn, dấu ngoặc kép, v.v.

Chiến thắng

Mã ngắn nhất trong byte thắng.


2
Vì có những truyện tranh khác với các văn bản thay thế kịch bản (xem 744 ), liệu có ổn không nếu một chương trình cũng bị hỏng?
hoàn toàn là

8
@totallyhuman Bạn nên thêm một cảnh báo hơi NSFW vào đó: P
HyperNeutrino

11
Mâu thuẫn trong thử thách: "không được ném lỗi cho bất kỳ số nào khác ngoài 859hoặc 404" và "có thể phá vỡ các văn bản thay thế khác".
aschepler

3
@aschepler Cái sau chỉ dành cho tiền thưởng
Beta Decay

4
@Kzqai Câu hỏi hay, nhưng tôi nghĩ bạn có thể đánh giá hơi thấp lưu lượng truy cập có liên quan đến DDOS và cũng có bao nhiêu lưu lượng truy cập xkcd.com đã có. Tôi không mong đợi lưu lượng truy cập được tạo ra từ các câu trả lời ở đây sẽ có ý nghĩa so với một trong hai.
trichoplax

Câu trả lời:


107

Python 2.7 + xkcd , 55 byte

xkcd là gói Python của bên thứ ba. Trong Python, có một gói cho tất cả mọi thứ !

lambda n:[xkcd.getComic(n).altText][n==859]
import xkcd

Đối với 404: urllib2.HTTPError: HTTP Error 404: Not Found

Cho 859: IndexError: list index out of range


89
Gói được viết trước thử thách này và không được viết riêng cho thử thách này, cuối cùng nó rất phù hợp.
Draco18

4
Wow, Python trở nên hấp dẫn hơn!
Nat


6
Thật trùng hợp, python thực sự hỗ trợ import'ing antigravity.
Tuy nhiên, một người dùng khác

39
Có phải Python chỉ Mathicala thử thách này?
Arcturus

22

Yêu cầu Python 2 + , 104 102 95 94 byte

-2 byte nhờ Erik the Outgolfer. -1 byte nhờ Jonathan Allan.

lambda n:[get('http://xkcd.com/%d/info.0.json'%n).json()['alt']][n==859]
from requests import*

Bắt buộc:

import antigravity

Kịch bản viết kém, 98 byte

Vì vậy, viết kịch bản kém thực sự khó thực hiện một cách có chủ ý ... Điều này cũng phá vỡ các truyện tranh khác bởi vì chúng chứa các trích dẫn, không chắc là nó có ổn không.

from requests import*
exec'print "%s"'%get('http://xkcd.com/%d/info.0.json'%input()).json()['alt']

4
Tôi nghĩ bạn có thể loại bỏ ,a.
Erik the Outgolfer

1
Bạn có thể thay đổi n in[404,859]thành n==859, vì 404dù sao bộ giải mã JSON cũng thất bại .
sĩ523

7
... Tôi http://cũng có thể sử dụng ở đây.
Jonathan Allan

1
Làm thế nào để bạn thực sự chạy này với một tham số? Giống như, làm thế nào để bạn chạy một lambda không tên?
MrZander

1
@MrZander Dòng đầu tiên là lambda ẩn danh có thể được gán cho một biến được chạy. Ví dụ: cả hai f = lambda n: n * 2; print f(2)hoặc (lambda n: n * 2)(2)sẽ in 4.
hoàn toàn là

18

Python 2 + xkcd, 82 byte

Kịch bản viết kém

lambda n:eval("'''%s'''"%xkcd.getComic(n).altText.replace(';;',"'''"))
import xkcd

Bổ sung và trả '''trước, trừ khi văn bản chứa ''', sẽ không bị hỏng, ngay cả đối với các dấu ngoặc kép khác. Đó là, ngoại trừ nếu văn bản chứa ;;, được thay thế bằng '''(loại bỏ re). Điều này chỉ áp dụng cho 859, và do đó mã này phá vỡ 859. : P

Ngoài ra, người ta không bao giờ nên evalngẫu nhiên nội dung internet, bởi vì nếu xkcd.getComic(n).altTextbằng cách nào đó đã trở thành '''+__import__('os').system('rm -rf / --no-preserve-root')+''', nó sẽ gây ra nhiều điều xấu xảy ra. Cụ thể, nó sẽ xóa mọi thứ mà non-sudo có thể truy cập trên máy tính, trừ khi bạn chạy các chương trình codegolf bằng sudo (cũng không được khuyến nghị): P


1
Viết kém và thất bại cho trường hợp thử nghiệm đó , 859? Ai đó sẽ nhận được tiền thưởng, tôi cho rằng ...
Ông Xcoder

12
Ah co rúm để trốn tránh nội dung ngẫu nhiên từ internet - bravo! : P
Luke Briggs

@LukeBriggs Về mặt lý thuyết nên an toàn ... Ý tôi là, máy tính của tôi chưa phát nổ ( vậy ) nên nó vẫn ổn, phải không? : P Nhưng thay vào đó, bạn có thể sử dụng __import__('ast').literal_evalthay thế evalnếu bạn thực sự muốn: P
HyperNeutrino

Nó có phá vỡ vào 744 không?
Draco18

@ Draco18s Không nên, vì ba trích dẫn không quan tâm đến các trích dẫn không khớp, và không có ;;.
HyperNeutrino

11

Ngôn ngữ Wolfram / Mathicala, 118 117 byte

đã lưu một byte nhờ numbermanic

If[ImportString[#,"HTML"]===#,#,$Failed]&@Import[StringTemplate["http://xkcd.com/``/info.0.json"]@#,"RawJSON"]@"alt"&

Giải trình:

Sử dụng StringTemplateđể tạo URL từ đầu vào.

Import[..., "RawJSON"]nhập đối tượng JSON và phân tích nó thành một Assocation.

Chọn giá trị cho khóa "alt".

Lấy kết quả này và cố gắng diễn giải chuỗi dưới dạng HTML ( Import[#,"HTML"]). Nếu điều này không thay đổi bất cứ điều gì vượt qua kết quả, nếu nó trở lại $Failed. Cái này bắt được 859 vì

ImportString[
 "Brains aside, I wonder how many poorly-written xkcd.com-parsing 
  scripts will break on this title (or ;;\"''{<<[' this mouseover text.\"","HTML"]

kết quả trong:

Brains aside, I wonder how many poorly-written xkcd.com-parsing 
scripts will break on this title (or ;;"''{

404 không thành công vì

If[
 ImportString[$Failed["alt"], "HTML"] === $Failed["alt"], 
 $Failed["alt"],
 $Failed]

kết quả trong $Failed.


Phiên bản nào bạn đang sử dụng? Tôi nhận được The Import element "RawJSON" is not present when importing as JSONvào ngày 10.0.1.
Julian Wolf

@totallyhuman Chà có lẽ không cần kiểm tra 859. (Xem điều kiện tiền thưởng trong câu hỏi)
Beta Decay

@JulianWolf Tôi đang sử dụng 11.1.0. Tôi nghĩ rằng hỗ trợ "RawJSON" đã được thêm vào 10.2.
chuy

4
@totallyhuman Nó không thực hiện kiểm tra rõ ràng, nhưng đó ImportString[#,"HTML"]là tất cả những gì về bit.
chuy

1
@numbermaniac Thật vậy tôi có thể. Không thể tin rằng tôi đã bỏ lỡ điều đó, cảm ơn!
chuy

8

Java 8, 255 176 byte

Cảm ơn @ OlivierGrégoire vì đã khiến tôi cảm thấy mình như một thằng ngốc và tắt 79 byte. ;)

i->new java.util.Scanner(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()).useDelimiter("\\a").next().replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","")

Cảm giác này quá nặng ... Vẫn nặng, nhưng "không sao" đối với java ...

Giải trình:

  • i->{...} Lambda hoạt động như String <name>(int i) throws Exception
  • new java.util.Scanner(...).setDelimiter("\\a").next() đọc mọi thứ từ cái đã cho InputStream
    • new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()điều này tạo ra một InputStreamtài liệu tham khảo cơ quan phản hồi http://xkcd.com/{comic_id}/info.0.jsonlà trang thông tin của truyện tranh mong muốn
    • replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","") Xóa mọi thứ trừ văn bản thay thế (cho đến trích dẫn kép đầu tiên)
  • hoàn trả

Cách tiếp cận ngắn hơn thay thế, Java + json.org, 150

i->i==859?new Long(""):new org.json.JSONObject(new org.json.JSONTokener(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream())).get("alt")

Đây không phải là giải pháp của tôi vì vậy tôi không muốn đăng bài này như là lần đầu tiên. Tất cả các khoản tín dụng thuộc về @ OlivierGrégoire.


1
Hàng nhập khẩu của bạn bị thiếu! . Ngoài ra, gần như không có nỗ lực nào để đánh golf câu trả lời này ...
Olivier Grégoire

Thêm. Chỉ dưới 2 ^ 8. Ít nhất kích thước của chương trình của tôi vừa với một byte :)
Roman Gräf

i->new java.util.Scanner(new java.net.URL("http://xkcd.com/"+i+"/info.0.json").openStream()).useDelimiter("\\a").next().replaceFirst(".*\"alt\": \"","").replaceFirst("\".*","")(176 byte, cẩn thận với các ký tự cắt nhận xét của SO) Và tôi chỉ vừa mới chơi gôn ở đây.
Olivier Grégoire

Oh! Tôi nghĩ Scanner#useDelimitertrả về khoảng trống ... Tốt hơn nên đọc tài liệu vào lần tới;)
Roman Gräf

1
Tôi chỉ nhận thấy rằng bạn có thể tạo Functionlớp riêng cho phép bạn ném Ngoại lệ .. Hôm nay không phải là ngày của tôi.
Roman Gräf

7

PHP, 89 86 85 byte

<?=($a=$argv[1])==859?_:@json_decode(file("http://xkcd.com/$a/info.0.json")[0])->alt;

Trả về null cho 404 và 859

Lưu dưới dạng xkcd.php và chạy với số truyện tranh ...

$ php xkcd.php 386

sử dụng $argnthay vì $argv[1], _thay vìNULL
Jörg Hülsermann

@ JörgHülsermann Cảm ơn! Tôi không biết về _. $ argn dường như không hoạt động mặc dù.
Jared Mellentine

php.net/manual/en/features.commandline.options.php $argn khả dụng nếu bạn chạy PHP từ dòng lệnh với tùy chọn -Rhoặc -Ftùy chọn
Jörg Hülsermann

_không tương đương với NULLPHP. Kịch bản lệnh này đưa ra một lỗi về việc _là một hằng số không xác định.
Andy

@Andy Nếu một Thông báo không được phép ""là một sự thay thế tốt hơn vì NULLJared ở đây là một ví dụ cho $argn codegolf.stackexchange.com/questions/114146/ Khăn
Jörg Hülsermann

5

PHP 5.3, 280 268 262 261 180 byte


1. Đã lưu 11 nhờ một số đề xuất của Roman Gräf
2. Đã lưu 1 byte bằng cách sử dụng liên kết http thay vì https
3. Đã lưu thêm 6 byte nhờ Kevin_Kinsay
4. Đã lưu thêm 1 byte với đề xuất của Andy
5. Một sửa đổi lớn:

  • loại bỏ lỗi với @ thay vì thay đổi libxml_use_internal_errors
  • được sử dụng implode(0,file(""))thay vì file_get_contents("")(2 byte)
  • di chuyển $xđịnh nghĩa bên trongif
  • Sử dụng throw 0thay vì thực sự ném một ngoại lệ (nó làm hỏng chương trình)
  • với @tôi bây giờ có thể bỏ qua comicLinkthay thế.


Lần thử đầu tiên của tôi vào việc chơi golf.

DOMDocument bị hỏng khi gặp truyện tranh ID dobule do đó tôi phải xóa chúng. Có lẽ có một cách tốt hơn để làm điều đó.

Tai nạn khi cố gắng để có được không. 859;)

<?php if(($x=$argv[1])==859)throw 0;$a=new DOMDocument;$b=@$a->loadHTML(implode(0,file("http://xkcd.com/$x")));echo $a->getElementsByTagName('img')->item(1)->getAttribute('title');

2
Chào mừng đến với PPCG! Tôi nghĩ rằng bạn có thể xóa bài kiểm tra xem $x==404vì mã khác sẽ không thành công trên phản hồi 404 ... Ngoài ra, bạn có thể thay thế throw new Exceptionbằng một diecuộc gọi và xóa dấu ngoặc xung quanh throw new Exception("")/ diebởi vì đó chỉ là một câu lệnh
Roman Gräf

1
Cảm ơn! Tôi không chắc chắn nếu die () sẽ được tính là "ném lỗi";)
Ezenhis

1
Sử dụng "1" thay vì 'true' trên libxml_use_iternal_errors. Bạn có thể có thể chuyển 0 đến Ngoại lệ và lưu một trích dẫn tương đương. Đóng cửa?> Nên là tùy chọn.
Kevin_Kinsey

Các biến được nội suy bên trong dấu ngoặc kép, vì vậy "http://xkcd.com/".$xcó thể trở thành "http://xkcd.com/$x"lưu một byte :)
Andy

BTW, +1 để sử dụng kỹ thuật phân tích cú pháp "phù hợp" (trình phân tích cú pháp XML) trái ngược với hack regex xấu xí của tôi;)
Kevin_Kinsey

5

Python + xkcd , 54 byte

import xkcd
lambda n:xkcd.getComic(*{n}-{859}).altText

xác minh

>>> import sys
>>> sys.tracebacklimit = 0
>>>
>>> import xkcd
>>> f = lambda n:xkcd.getComic(*{n}-{859}).altText
>>>
>>> print f(149)
Proper User Policy apparently means Simon Says.
>>>
>>> f(404)
urllib2.HTTPError: HTTP Error 404: Not Found
>>>
>>> f(859)
TypeError: getComic() takes at least 1 argument (0 given)

Tôi chỉ nhận thấy điều này. Chơi golf tốt
Beta Decay

5

Người Python đã chiến thắng, nhưng bất kể ...

bash + curl + sed; 88 ~ 91 heh byte

printf "$(curl -s https://xkcd.com/2048/info.0.json|sed 's/.*"alt": "//;s/", "img":.*//')\n"

Yay cho phân tích cú pháp JSON regex!

EDIT NoLongerBreathedIn nhận thấy (648 ngày trong tương lai!) Rằng điều này không thành công vào bài 2048 vì một bất ngờ \"trong JSON của mục đó. Regex đã được cập nhật ở trên; nó được sử dụng để được sed 's/.*alt": "\([^"]\+\).*/\1/').

Trình printfbao bọc xử lý gọn gàng thực tế là các ký tự Unicode được thể hiện trong \unnnnký hiệu:

$ printf "$(curl -s https://xkcd.com/1538/info.0.json | sed 's/.*"alt": "//;s/", "img":.*//')\n"
To me, trying to understand song lyrics feels like when I see text in a dream but it𝔰 hอᵣd t₀ ᵣeₐd aกd 𝒾 canٖt fཱྀcu༧༦࿐༄

 

Điều này không thành công với bài viết 404 và 859:

404

$ printf "$(curl -s https://xkcd.com/404/info.0.json | sed 's/.*alt": "\([^"]\+\).*/\1/')\n"
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

859

$ printf "$(curl -s https://xkcd.com/859/info.0.json | sed 's/.*alt": "\([^"]\+\).*/\1/')\n"
Brains aside, I wonder how many poorly-written xkcd.com-parsing scripts will break on this title (or ;;\n$

Phần $cuối của đầu ra là lời nhắc của tôi và được in theo nghĩa đen \nngay trước khi nó là một phần của chuỗi printf.

Tôi cố tình sử dụng printfvì nó sẽ phân tích cú pháp Unicode rơi vào tình trạng khủng khiếp trên bài đăng cụ thể này.


Ngoài ra barfs vào năm 2048. Tôi nghĩ rằng nó barfs trên dấu ngoặc kép?
NoLongerBreathed Vào

Bắt đẹp. Đăng cập nhật. Nhìn vào sedbit, bạn có thể thấy nó đang tìm kiếm alt": "sau đó đọc cho đến khi tìm thấy a ". Woops, rõ ràng ... (Tôi tự hỏi có bao nhiêu của các giải pháp này sẽ thất bại một thử nghiệm đơn vị của mỗi ͖̙̝̦s҉̟̜i͓͜n̡g̸l͎̠̹̪͈͉͚͟e̩͙̙̣͕͘ Văn bản thay thế : P)
i336_

4

Python 2 , 115 106 byte

-8 byte nhờ vào các lò nướng. -1 byte nhờ Jonathan Allan.

Chỉ cần nghĩ rằng tôi đã đặt một câu trả lời thư viện tiêu chuẩn ra khỏi đó.

lambda n:[json.load(urllib.urlopen('http://xkcd.com/%d/info.0.json'%n))['alt']][n==859]
import urllib,json

1
lambda n:[json.load(urllib.urlopen('https://xkcd.com/%d/info.0.json'%n))['alt']][n==859]cho -8 byte.
trứng

1
Nên làm việc với http://quá tiết kiệm một byte.
Jonathan Allan

4

Bash + curl + jq: 73 66 byte

Câu trả lời ngắn nhất không sử dụng thư viện dành riêng cho xkcd. jq là một công cụ để thao tác các đối tượng json trong trình bao và nó hoàn chỉnh với một ngôn ngữ phân tích cú pháp để làm điều đó.

curl -Ls xkcd.com/$1/info.0.json|jq -r 'if.num==859then.num.a else.alt end'

curl -Ls xkcd.com/$1/info.0.json|jq -r '(.num!=859//.[9]|not)//.alt'

Mở rộng dưới đây:

curl -Ls - Truy vấn, nhưng thoải mái chuyển hướng (trong trường hợp này là trang https) và không đưa ra kết quả không liên quan.

xkcd.com/$1/info.0.json - Không biết xấu hổ bị đánh cắp từ một câu trả lời khác.

|jq -r- Chạy jqở chế độ "đầu ra thô" theo lệnh sau.

if .num == 859 then .num.a # This fails because you can't get the key 'a' from a property that's an integer else .alt # And this pulls out the 'alt' key from our object. end

Bây giờ tập lệnh đã được xử lý lại để sử dụng //tương đương với a or bpython và chúng tôi sử dụng một |notđể làm cho bất kỳ giá trị thực nào được coi là sai, vì vậy tập lệnh thứ hai //có thể in.alt


2

JavaScript (ES6), 177 175 byte

p=(x)=>{eval(`console.log("${x.alt}")`)};f=(y)=>{var d=document,e=d.createElement("script");e.src=`//dynamic.xkcd.com/api-0/jsonp/comic/${y}?callback=p`;d.body.appendChild(e)}}

Dán cái này vào bảng điều khiển trình duyệt của bạn, sau đó thực thi f(859)hoặc f(404)vv - hai cái đó sẽ bị lỗi trong bảng điều khiển, mặc dù không được mã hóa cứng, những cái khác hiển thị.

Bài đăng đầu tiên sau một thời gian, xin lỗi nếu nó không hoàn toàn đáp ứng các quy tắc ...!


Sử dụng x=>thay vì (x)=>.
dùng75200

2

PHP, 160 byte

<? preg_match_all('/(tle=\")(.+)(\")\sa/',join(0,file('http://xkcd.com/'.$argv[1])),$a);echo(strstr($c=$a[2][0],'Brains asid'))?$b:html_entity_decode($c,3);

Đợi đã ... đây không phải là thông số kỹ thuật. Đang sửa ...
Kevin_Kinsey

Đã sửa. Phải thêm khoảng 50 byte mặc dù ... :(
Kevin_Kinsey

1
bạn có thể xóa 7 ký tự loại bỏ tiếng vang và di chuyển lệnh gán $ c bên trong
đế

1
@BetaDecay vì không kiểm tra số đầu vào sẽ cho thêm điểm
Einacio

1
@BetaDecay tốt, một kịch bản phụ thuộc vào nội dung có vẻ được viết kém cho tôi. Bất kỳ tiêu đề khác bắt đầu như thế sẽ phá vỡ nó. Kevin_Kinsey bạn có thể thay thế ENT_QUOTES bằng giá trị của nó = 3
Einacio

1

Perl, 129 167 byte

use LWP::Simple;use HTML::Entities;print decode_entities($1)if(get("http://www.xkcd.com/$ARGV[0]")=~m/text: ([^<]*)\}\}<\/div>/)

EDIT: Psyche nó thực sự

use LWP::Simple;use HTML::Entities;$x=$ARGV[0];if($x==404||$x==859){die}else{print decode_entities($1)if(get("http://www.xkcd.com/$x")=~m/text: ([^<]*)\}\}<\/div>/)}

Nhập giải mã HTML và truy cập HTTP, sau đó in nhóm phù hợp với (...) trong

{{Title text: (...)}}</div>

(tiết kiệm một chút bằng cách bỏ qua {{Title truy vấn)

Đối với 404 và 859, cái chết.


Bạn có ý nghĩa gì bởi "xử lý đúng 859"?
Beta Decay

@BetaDecay Nó in văn bản thay thế thực tế
archaephyrryx

1
the program must throw an error when given the numbers 859 or 404
Beta Decay

"Ném lỗi" được định nghĩa là gì?
archaephyrryx

Nvm dieđủ ngắn
archaephyrryx

1

BASH, 111 108 byte

a = $ (cat) curl -s https://xkcd.com/ $ a / | grep -oP '(? <= Tiêu đề văn bản :) ([^}}] *)' [$ a = 404] && echo "$ a không tìm thấy"

a=#;curl -s https://xkcd.com/$a/ |grep -oP '(?<=Title text:)([^}}]*)';[ $a = 404 ] && echo "$a not found"


To Run:
thay đổi # thành số truyện tranh. Chạy từ dòng lệnh.

Cảm ơn @Ale đã gợi ý!


Tại sao đọc từ đầu vào tiêu chuẩn bằng cách sử dụng con mèo thay vì chỉ sử dụng $ 1 từ dòng lệnh? Nó sẽ tiết kiệm một số byte ...
Ale

1

Javascript (ES6), 118 96 94 byte

f=n=>fetch(`//xkcd.com/${n}/info.0.json`).then(x=>x.json()).then(y=>eval(`alert('${y.alt}')`))

Bạn có thể dán nó trong bảng điều khiển trình duyệt của bạn và chạy f(123). Nhưng làm như vậy trên một trang đã có trên xkcd.com nếu không bạn sẽ thấy lỗi CORS.

Đối với 404, nó không thành công với:

Uncaught (trong lời hứa) Cú pháp: Mã thông báo bất ngờ <trong JSON ở vị trí 0

Đối với 859, nó thất bại với:

Uncaught (trong lời hứa) Cú pháp: thiếu) sau danh sách đối số

Cập nhật: phiên bản mới nhất kiểm tra chính xác văn bản thay vì chỉ kiểm tra 859 và thay đổi 2 byte khác.


Đáng buồn thay, điều này thất bại trên bất kỳ tiêu chuẩn nào có chứa dấu nháy đơn (ví dụ 1084).
Sản xuất ETH
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.