PowerShell: 145 103
การเปลี่ยนแปลงจาก
quelch ข้อผิดพลาดดั้งเดิมที่ถูกลบต่อความคิดเห็นจากผู้ถาม
รหัส:
"$([array]::IndexOf(($s=(read-host)-split''|?{$_}),($x=$s|?{$_%2-eq0}|?{$_-gt0}|sort|select -f 1))),$x"
เกมส์:
"... "ทุกอย่างภายในเครื่องหมายคำพูดจะรวมอยู่ในผลลัพธ์
$(... )ทุกสิ่งระหว่างวงเล็บจะถือว่าเป็นคำสั่งและผลลัพธ์ของรหัสนั้นจะถูกรวมไว้แทนที่จะเป็นคำสั่งเอง
[array]::IndexOf(... )นี่ใช้เพื่อรับดัชนีขององค์ประกอบที่มีอาร์เรย์ พารามิเตอร์แรกคือวัตถุอาร์เรย์ที่จะค้นหา พารามิเตอร์ที่สองคือวัตถุที่จะพบ นี่จะแสดงดัชนีขององค์ประกอบที่ตรงกันแรกเท่านั้น ฉันพยายามเพียงแค่ใช้IndexOfวิธีต่อต้านโดยตรง$s(เช่น: $s.IndexOf($x)แต่สิ่งนี้ล้มเหลวด้วยเหตุผลบางอย่างที่ฉันยังไม่ทราบ - มันอ้างว่าวิธีนี้ไม่มีอยู่ในวัตถุนั้น
(... การแสดงออกภายในวงเล็บจะเป็นครั้งแรกสำหรับพารามิเตอร์)IndexOf
$s= $ s จะเป็นตัวแปรในการจัดเก็บข้อมูลผู้ใช้
(read-host)-split'' รับอินพุตของผู้ใช้และแยกเป็นอาร์เรย์ของอักขระ '
|?{$_}-split''กรองออกองค์ประกอบมากมายที่ว่างเปล่าพิเศษที่สร้างขึ้นโดย
,(... การแสดงออกภายในวงเล็บจะเป็นพารามิเตอร์ที่สองสำหรับ)IndexOf
$x= $ s จะเป็นตัวแปรในการจัดเก็บตัวเลขแม้แต่น้อยที่สุดจากการป้อนข้อมูลของผู้ใช้
$s|?{$_%2-eq0} ดึงตัวเลขออกจาก $ s
|?{$_-gt0} ยกเลิกค่าศูนย์
|sort เรียงลำดับวัตถุที่เหลืออยู่ลำดับเริ่มต้นจะขึ้น
|select -f 1 เลือกวัตถุแรกซึ่งตอนนี้จะเป็นเลขคู่ที่ต่ำที่สุด
,$xโค้ดด้านบนจะแสดงดัชนีของเลขคู่ต่ำสุดของเรา สิ่งนี้จะเพิ่มเครื่องหมายจุลภาคแล้วส่งออกตัวเลขนั้นเอง
หมายเหตุ:
นี่อาจจะยืดกฎข้อที่ 4 นิดหน่อย หากไม่มีเลขคู่เอาท์พุทจะไม่รวมหมายเลขที่สอง
นอกจากนี้สิ่งนี้จะส่งข้อผิดพลาดที่ไม่สิ้นสุดหากอินพุตมีองค์ประกอบที่ไม่ใช่ตัวเลข สคริปต์จะยังคงทำงานและให้ผลผลิตที่เหมาะสม แต่คุณอาจต้องการที่จะตั้งค่า$ErrorActionPreferenceการ'SilentlyContinue'ก่อนที่จะใช้มัน