Perl, 92
$_='use I;$h=shift;grep I->new("$h:$_"),shift..shift';
s/I/IO::Socket::INET/g;@_=eval;say"@_"
Perl 5.10 trở lên, chạy với perl -E 'code here'
.
Sử dụng regex để nén lâu IO::Socket::INET
, sau đó eval
; định dạng cuối cùng được thực hiện với nội suy mảng.
Theo yêu cầu, một lời giải thích chi tiết hơn. Để ungolf, trước tiên hãy tôn trọng:
$_ = << 'EOC';
use I;
$h = shift;
grep I->new("$h:$_"), shift..shift;
EOC
s/I/IO::Socket::INET/g;
@_ = eval;
say "@_";
Dòng trước khi eval
thay thế tất cả (hai) lần xuất hiện của 'I' bằng 'IO :: Socket :: INET', đó là một mẹo chơi gôn Perl tiêu chuẩn để giảm tác động của các số nhận dạng dài không thể tránh khỏi. Đặt tên cho một số tạm thời, mã sau đó tương đương với điều này:
use IO::Socket::INET;
$h = shift;
$p1 = shift;
$p2 = shift;
@_ = grep IO::Socket::INET->new("$h:$_"), ($p1 .. $p2);
say "@_";
Tóm lại: đọc các đối số phạm vi máy chủ và cổng từ dòng lệnh; cố gắng kết nối với tất cả chúng theo thứ tự ( IO::Socket::INET->new()
); giữ một danh sách những người đã thành công ( grep
); hiển thị kết quả độc đáo ( say
).