MATLAB, 63 41 40 38 36 ไบต์
ขอบคุณ Tom Carpenter ที่ช่วยกำจัด 1 ไบต์!
ขอบคุณ Stewie Griffin สำหรับการโกนหนวด 2 ไบต์!
@(x)nnz(x(+~strcmp('google',x):end))
ซึ่งแตกต่างจากการแก้ปัญหาที่สง่างามมากขึ้นอื่น ๆ ดำเนินการส่วนหนึ่งโดยการดำเนินการศูนย์ใน MATLAB จะไม่ให้เกิดข้อผิดพลาด Inf
แต่ การแก้ปัญหานี้พบว่าความยาวของสตริงโดยnnz
การแก้ปัญหานี้พบว่าความยาวของสตริงโดยสตริงที่ผลิตนั้นเป็นแบบที่คุณทำดัชนีจากจุดเริ่มต้นของสตริงจนถึงจุดสิ้นสุดซึ่งเป็นสำเนาของสตริง 'google'
แต่สิ่งที่สำคัญคือจุดเริ่มต้นของการที่จะเข้าถึงสตริงที่ผลิตโดยการตรวจสอบหรือไม่ว่าการป้อนข้อมูลที่มีค่าเท่ากับ หากไม่ใช่นี่จะสร้างดัชนีเริ่มต้นที่ 1 และเราจัดทำดัชนีลงในสตริงตามปกติ ... เนื่องจาก MATLAB เริ่มทำดัชนีที่ 1 ควรเป็นเท่ากันดัชนีที่ผลิตคือ 0 และ MATLAB จะโยนข้อผิดพลาดการทำดัชนีระบุว่า ดัชนีต้องเป็นจำนวนเต็มบวก ความพิเศษ+
เพื่อให้มั่นใจว่าการส่งออกของการตรวจสอบความเสมอภาคเป็นตัวเลขมากกว่าแบบบูลlogical
/ การละเว้น+
จะสร้างคำเตือน แต่เนื่องจากข้อกำหนดของความท้าทายนี้ไม่อนุญาตให้มีคำเตือน+
จึงจำเป็นต้องใช้ ... ดังนั้นจึงต้องกรอกรหัส
ตัวอย่างการใช้
>> f=@(x)nnz(x(+~strcmp('google',x):end)) %// Declare anonymous function
f =
@(x)nnz(x(+~strcmp('google',x):end))
>> f('bing')
ans =
4
>> f('google')
Subscript indices must either be real positive integers or logicals.
Error in @(x)nnz(x(+~strcmp('google',x):end))
รุ่นที่สนุกสนานยิ่งขึ้น83 77 76 74 72 ไบต์
ขอบคุณ Tom Carpenter ที่ช่วยกำจัด 1 ไบต์!
ขอบคุณ Stewie Griffin สำหรับการโกนหนวด 2 ไบต์!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
ข้างต้นไม่ใช่การส่งอย่างเป็นทางการ แต่เป็นสิ่งที่สนุกยิ่งขึ้นในการใช้งาน เหยียดหยามeval
ภายในฟังก์ชั่นที่ไม่ระบุชื่อสิ่งที่รหัสไม่สามารถที่จะตรวจสอบเพื่อดูว่าสายป้อนเท่ากับ'google'
... และถ้ามันเป็นอย่างนี้จะเปิดขึ้นในตัวเว็บเบราว์เซอร์ของ MATLAB และแสดงหน้าข้อผิดพลาด 404 ของ Google พยายามที่จะเข้าถึง หน้าย่อยอยู่ที่i
เมื่อไม่มีอยู่ ถ้าไม่เราแสดงความยาวของสตริงตามปกติ
ตัวอย่างการใช้
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
การโทรครั้งสุดท้ายที่ใช้'google'
ทำให้หน้าจอนี้: