StackExchange Mustafa ทนไม่ได้ที่จะถามคำถามเดียวกันสามครั้ง


16

ออสติน: "ใครส่งคุณ"

Mustafa: "คุณต้องฆ่าฉัน!"

ออสติน: "ใครส่งคุณ"

มุสตาฟา: "จูบก้นฉันพลัง!"

ออสติน: "ใครส่งคุณ"

Mustafa: "Dr. Evil"

( ... )

มุสตาฟา: "ฉันทนไม่ได้ที่จะถูกถามคำถามเดียวกันสามครั้งมันทำให้ฉันหงุดหงิด"

คุณจะต้องจำลองการสนทนาสั้น ๆ ในจิตวิญญาณของAustin Powers และมุสตาฟา แต่แหล่งข้อมูลสำหรับการสนทนาทั้งหมดจะเป็นคำถาม StackOverflow (ระบุเป็นอินพุตจาก URL)

กฎระเบียบ

ชื่อผู้ถามคำถามจะถูกใช้แทน "Austin" คำถามที่พวกเขาจะถามสามครั้งมาจากประโยคสุดท้ายในชื่อคำถาม (ซึ่งถูกบังคับให้ลงท้ายด้วยเครื่องหมายคำถามหากยังไม่ได้ตอบ)

StackExchange จะเล่นเป็นส่วนหนึ่งของ "Mustafa" ท้ายที่สุดคำตอบที่ได้รับมาจากประโยคแรกในคำตอบที่ไม่ได้ลงท้ายด้วยเครื่องหมายคำถามและจะนำมาประกอบกับชื่อของผู้ใช้ที่ตอบคำถาม

สำหรับคำถามที่มีคุณสมบัติสำหรับเกมนั้นจะต้อง (ก) มีคำตอบและ (b) จะต้องมีลำดับความคิดเห็นเกี่ยวกับคำถามเดิมที่ไป:

  • ความคิดเห็นจากคนอื่นที่ไม่ใช่ผู้ถาม
  • (จำนวนความคิดเห็นที่ข้าม)
  • ความคิดเห็นจากผู้ถาม
  • ความคิดเห็นจากคนอื่นที่ไม่ใช่ผู้ถาม
  • (ความคิดเห็นที่ข้ามได้จำนวนเท่าใดก็ได้)
  • ความคิดเห็นจากผู้ถาม

หากไม่พอใจกับลำดับนี้ก่อนวันที่ของคำตอบที่ได้รับการจัดอันดับสูงสุดโปรแกรมควรจะแสดงผลลัพธ์ออกมา"Oh, behave!"

StackExchange Mustafa การโต้กลับโกรธมาจากประโยคแรกของความคิดเห็นจากคนอื่นที่ไม่ใช่ผู้ถามที่ไม่ได้จบด้วยเครื่องหมายคำถามและทำให้มั่นใจว่าลงท้ายด้วยเครื่องหมายอัศเจรีย์ หากไม่มีประโยคอยู่ในความคิดเห็นที่ไม่ได้ลงท้ายด้วยเครื่องหมายคำถามมันจะถูกข้ามเป็นตัวเลือกสำหรับการตอบโต้ การตอบโต้ความคิดเห็นมีสาเหตุมาจากชื่อผู้ใช้ของผู้เขียน

ชี้แจง

  • ดึงข้อมูลการตอบสนอง "@XXX" ที่เป็นผู้นำออกจากความคิดเห็น

  • เนื่องจาก StackOverflow สรุปความคิดเห็นหากมีจำนวนมากคุณอาจต้องใช้คำขอที่สองเพื่อรับรายการทั้งหมด คำขอนั้นเป็นแบบฟอร์มที่/programming//posts/NNN/comments?_=MMMมีรหัสการโพสต์ใน N และรหัสคำถามใน M. ดูตัวอย่าง: /programming//posts/11227809/comments?_=211160

  • ควรดึง URL ออกเพื่อยึดข้อความเท่านั้น

  • เราจะกำหนด "ประโยค" เป็นสิ่งใด ๆ นอกบล็อกโค้ดที่ลงท้ายด้วยจุดเครื่องหมายคำถามหรือเครื่องหมายอัศเจรีย์ หากการรันข้อความไม่มีการเว้นวรรคตอนท้ายของแบบฟอร์มนี้การสิ้นสุดของข้อความคือจุดสิ้นสุดของประโยค ราวกับว่ามันถูกเขียนขึ้นด้วยจุด

  • หากคุณกำลังมองหากรณีทดสอบตลกที่มีแนวโน้มที่จะมีสิทธิ์ได้คุณอาจลองใช้ StackExchange Data Explorer เช่นโพสต์กับความคิดเห็นส่วนใหญ่

  • ... มากกว่าที่จะมาฉันจะเดิมพัน ...

ตัวอย่าง

ตัวอย่างที่หนึ่ง

การป้อนข้อมูล:

/programming/2283937/how-should-i-ethically-approach-user-password-storage-for-later-plaintext-retrie/

เอาท์พุท:

shanee: "ฉันจะเข้าหาที่เก็บรหัสผ่านของผู้ใช้อย่างมีจริยธรรมได้อย่างไรเพื่อการดึงข้อความธรรมดาในภายหลัง"

stefanw: "ฉันคิดว่าเขารู้ว่ามันไม่ดี!"

shanee: "ฉันจะเข้าหาที่เก็บรหัสผ่านของผู้ใช้อย่างมีจริยธรรมได้อย่างไรเพื่อการดึงข้อความธรรมดาในภายหลัง"

Rook: "บางทีคุณควรถามว่าคุณจะใช้ Buffer Overflow Vulnerability ได้อย่างไรในวิธีที่ปลอดภัย!"

shanee: "ฉันจะเข้าหาที่เก็บรหัสผ่านของผู้ใช้อย่างมีจริยธรรมได้อย่างไรเพื่อการดึงข้อความธรรมดาในภายหลัง"

Michael Burr: "ถามว่าทำไมต้องใช้รหัสผ่านในแบบธรรมดา: ถ้าเป็นเช่นนั้นเพื่อให้ผู้ใช้สามารถดึงรหัสผ่านได้แล้วพูดอย่างเคร่งครัดว่าคุณไม่จำเป็นต้องดึงรหัสผ่านที่พวกเขาตั้งไว้ (พวกเขาจำไม่ได้ว่ามันคืออะไร อย่างไรก็ตาม) คุณต้องให้รหัสผ่านที่สามารถใช้กับพวกเขาได้ "

ตัวอย่างที่สอง

การป้อนข้อมูล:

http://scifi.stackexchange.com/questions/2611/why-dont-muggle-born-wizards-use-muggle-technology-to-fight-death-eaters

เอาท์พุท:

DVK: "ทำไมพ่อมดมักเกิ้ลถึงมักเกิ้ลไม่ได้ใช้เทคโนโลยีมักเกิ้ลเพื่อต่อสู้กับผู้เสพความตาย"

DampeS8N: "นี่เต้นไปที่ขอบอีกครั้ง!"

DVK: "ทำไมพ่อมดมักเกิ้ลถึงมักเกิ้ลไม่ได้ใช้เทคโนโลยีมักเกิ้ลเพื่อต่อสู้กับผู้เสพความตาย"

DampeS8N: "ถูกต้อง แต่เว็บไซต์นี้ไม่ได้เกี่ยวกับการชี้ให้เห็นช่องโหว่ของพล็อต!"

DVK: "ทำไมพ่อมดมักเกิ้ลถึงมักเกิ้ลไม่ได้ใช้เทคโนโลยีมักเกิ้ลเพื่อต่อสู้กับผู้เสพความตาย"

เจฟฟ์: "ฉันเชื่อว่าแม้ว่าฉันจะไม่สามารถหาข้อมูลอ้างอิงได้ก็ตาม JK Rowling พูดถึงเรื่องนี้ในจุดหนึ่ง"

ตัวอย่างที่สาม

การป้อนข้อมูล:

/programming/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array

เอาท์พุท:

"อ้าวประพฤติ!"

(เวลาตอบอันดับสูงสุดคือJun 27 '12 at 13:56ในขณะที่ความคิดเห็นติดตามครั้งที่สองในคำถามโดยผู้ถามอยู่ในเวลาJun 27 '12 at 14:52ดังนั้นจึงไม่มีการเชื่อมโยงเชิงสาเหตุระหว่างการติดตามครั้งที่สองและคำตอบ :-P)

เกณฑ์การชนะ

รหัสกอล์ฟ - รหัสที่สั้นที่สุดชนะ


4
เพิ่งใช้เวลาครึ่งชั่วโมงสุดท้ายที่อ่านแฮร์รี่พอตเตอร์ว่า +1 สำหรับสิ่งนั้น!
BrunoJ

ไม่มีคำตอบใหม่สำหรับคำถามนี้ในขณะที่ อาจถึงเวลาที่จะสิ้นสุดในตอนนี้หรืออย่างน้อยก็เพิ่มกำหนดเวลา?
Lars Ebert

@ LarsEbert เสร็จแล้ว ... (แม้ว่าจริง ๆ แล้วฉันจะหยุดมันใน Rebmu โอกาสที่จะทำให้มันอยู่ในตารางงานของฉันคือ ATM ที่บางเฉียบ)
HostileFork บอกว่าไม่ไว้ใจ SE

คุณยังสามารถเพิ่มได้ในอนาคต ฉันชอบที่จะเห็นวิธีการแก้ปัญหาทางเลือก (และอาจสั้นกว่า)
Lars Ebert

คำตอบ:


3

PHP, 1282 ตัวอักษร

ในขณะที่ 1282 ค่อนข้างใหญ่สำหรับการแข่งขันกอล์ฟรหัสความท้าทายค่อนข้างซับซ้อน (และฉันเล่นกอล์ฟไม่ค่อยเก่ง)

<?php function a($a,$b='q'){$a=strip_tags(htmlspecialchars_decode($a,ENT_QUOTES));$a=preg_replace('/^@[^ ]+\s+/','',$a);$a=mb_split('(?<=(?:\.|!|\?))\s+',$a);if($b=='q'){return preg_replace('/(?:\.|!|\?)$/','',$a[0]).'?';}else{foreach($a as$s){if(!preg_match('/\?$/',$s)){if($b=='c'){return preg_replace('/(?:\.|!)$/','',$s).'!';}else{return preg_replace('/(?<!(?:\.|!))$/','.',$s);}}}}return 0;}function b($a){return json_decode(gzdecode(file_get_contents('http://api.stackexchange.com/2.2/questions/'.$a)));}function c($a){return $a->owner->display_name;}$n="\n";$x="Oh, behave!\n";$r=parse_url($argv[1]);$b=explode('/',$r['path']);$b=$b[2];$u=b($b.'?site='.$r['host']);$u=$u->items[0];$c=b($b.'/comments?filter=withbody&order=asc&sort=creation&site='.$r['host']);$a=b($b.'/answers?filter=withbody&order=desc&sort=votes&site='.$r['host']);if(!count($a->items)||!count($c->items))die($x);$a=$a->items[0];$s=array();$d=1;foreach($c->items as$e){if($e->creation_date>$a->creation_date)break;if($e->owner->user_id==$u->owner->user_id){$d=1;}elseif($d){$e->body=a($e->body,'c');if($e->body){$s[]=$e;}$d=0;}}if(count($s)<2)die($x);$q=c($u).': "'.a($u->title,'q').'"'.$n;echo$q.c($s[0]).': "'.$s[0]->body.'"'.$n.$q.c($s[1]).': "'.$s[1]->body.'"'.$n.$q.c($a).': "'.a($a->body,'a').'"'.$n;

เวอร์ชันที่ไม่ดี

<?php

    function firstSentence($string, $type = 'q') {
        $string = strip_tags(htmlspecialchars_decode($string, ENT_QUOTES));
        $string = preg_replace('/^@[^ ]+\s+/', '', $string);
        $string = mb_split('(?<=(?:\.|!|\?))\s+', $string);
        if($type === 'q') {
            return preg_replace('/(?:\.|!|\?)$/', '', $string[0]) . '?';
        } else {
            foreach($string as $s) {
                if(!preg_match('/\?$/', $s)) {
                    if($type === 'c') {
                        return preg_replace('/(?:\.|!)$/', '', $s) . '!';
                    } else {
                        return preg_replace('/(?<!(?:\.|!))$/', '.', $s);
                    }
                }
            }
        }
        return false;
    }

    $x = "Oh, behave!\n";

    $url = parse_url($argv[1]);
    $api = 'http://api.stackexchange.com/2.2/';

    $id = explode('/', $url['path']);
    $id = $id[2];

    $question = json_decode(gzdecode(file_get_contents($api . 'questions/' . $id . '?site=' . $url['host'])));
    $question = $question->items[0];
    $comments = json_decode(gzdecode(file_get_contents($api . 'questions/' . $id . '/comments?filter=withbody&order=asc&sort=creation&site=' . $url['host'])));
    $answer = json_decode(gzdecode(file_get_contents($api . 'questions/' . $id . '/answers?filter=withbody&order=desc&sort=votes&site=' . $url['host'])));
    if(!count($answer->items) || !count($comments->items))
        die($x);

    $answer = $answer->items[0];

    $selected = array();
    $usable = true;
    foreach($comments->items as $comment) {
        if($comment->creation_date > $answer->creation_date)
            break;
        if($comment->owner->user_id === $question->owner->user_id) {
            $usable = true;
        } elseif($usable) {
            $comment->body = firstSentence($comment->body, 'c');
            if($comment->body !== false) {
                $selected[] = $comment;
            }
            $usable = false;
        }
    }

    if(count($selected) < 2)
        die($x);

    $q = $question->owner->display_name . ': "' . firstSentence($question->title, 'q') . '"' . "\n";
    echo $q;
    echo $selected[0]->owner->display_name . ': "' . $selected[0]->body . '"' . "\n";
    echo $q;
    echo $selected[1]->owner->display_name . ': "' . $selected[1]->body . '"' . "\n";
    echo $q;
    echo $answer->owner->display_name . ': "' . firstSentence($answer->body, 'a') . '"' . "\n";

?>

คุณสามารถ$a=function(1,2,$a)เชื่อมโยงทุกสิ่งเข้าด้วยกัน
wizzwizz4
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.