문제:
읽고 이해할 수있는 문장을 생성하십시오. 주제, 동사, 사물을 포함해야하며 시제와 복수가 일치해야합니다. 프로그램은 또한 자격을 갖추기 위해 여러 가지 다른 문장을 생성 할 수 있어야합니다.
규칙 :
- 문장을 하드 코딩하는 것은 허용되지 않으며 파일에서 직접 읽지도 않습니다 (나는 당신을보고 있습니다, unclemeat)
- 여러 단어 목록을 가질 수 있습니다
- 프로그램에서 생성 한 예제 문장 또는 2를 제출하십시오.
- 모든 언어가 허용됩니다
- 그것은의 인기 콘테스트 , 그래서 가장 upvoted 대답은 승리
답변
세게 때리다
fgrep '/* ' /usr/src/linux* -r | cut -d '*' -f 2 | head -$((RANDOM)) | tail -1
요구 사항 : / usr / src에 설치된 Linux 커널 소스
커널 소스에서 임의의 주석을 가져옵니다. 문장이 실제로 이해할 수 있는지 여부는 논쟁의 여지가 있습니다.
실제 출력의 예 :
end of packet for rx
I don't know what to do
256 byte packet data buffer.
The rest of this junk is to help gdb figure out what goes where
Convert page list back to physical addresses, what a mess.
???
Only Sun can take such nice parts and fuck up the programming interface
답변
MATLAB
why
출력 예 :
>> why
The programmer suggested it.
>> why
To please a very terrified and smart and tall engineer.
>> why
The tall system manager obeyed some engineer.
>> why
He wanted it that way.
[이것은 Matlab의 부활절 달걀 중 하나입니다]
편집 : 당신은이 함수의 코드를 여기에서 볼 수 있습니다 : why.m
답변
PHP
충분한 시간이 주어지면 과거, 현재, 미래의 모든 문헌이 만들어 질 것입니다. 이 규칙은 다른 텍스트를 만들 수 없다고 언급하지 않았습니다.
문자열 'TOS...'
은 영어와 더 밀접하게 일치하도록 문자의 로그 스케일 빈도를 제공합니다. 대략적인 상대 문자 빈도로 더 큰 문자열을 생성하는 데 사용됩니다.
$a = ord('A');
$s = '';
foreach (str_split('TOSRWQPPUALRQTTRGUUUQMMLMFZ') as $i=>$f)
{
if (!ctype_alpha($c = chr($a + $i)))
$c = ' ';
$s .= str_repeat($c, round(exp((ord($f) - $a) / 3.976)));
}
$l = strlen($s) - 1;
for (;;)
echo substr($s, mt_rand(0, $l), 1);
그것을 실행하면서 나는 다음과 같은 문학 보석을 발견했다.
GO NOW
– 주제로서의 당신 은 암시 적입니다.IM AOK
-난 괜찮아IM FDR
-나는 F (ranklin) D (eleano) R (oosevelt)
또한 현재 상황에 대한 불만을 간결하게 표현하려는 수많은 독창적 인 태도. [일부 편지가 수정되었습니다.]
F**K
S**T
또한 다음과 같이 미세 조정 된 스케일링을 사용합니다.
IS IT ON
I AM STU
I SEE HTML
답변
씨
char*strerror(),i;main(){for(;--i;)puts(strerror(i));}
출력 예 :
소프트웨어 연결이 중단되었습니다
중단 된 시스템 호출을 다시 시작해야합니다
제목, 동사 및 객체가없는 유효한 문장 출력이 많이 있습니다.
타이머 만료
파일이 존재합니다
답변
자바
임의의 Wikipedia 기사에서 소개 문장을 가져옵니다.
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
public class RandomSentence {
public static void main (String[] args) throws Exception {
String sentence;
do {
InputStream in = new URL("https://en.wikipedia.org/wiki/Special:Random").openStream();
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
String intro = doc.getElementsByTagName("p").item(0).getTextContent();
sentence = intro.replaceAll("\\([^(]*\\) *", "").replaceAll("\\[[^\\[]*\\]", "").split("\\.( +[A-Z0-9]|$)")[0];
} while (sentence.endsWith(":") || sentence.length() < 30 || sentence.contains("?"));
System.out.println(sentence + ".");
}
}
때때로 당신은 운이 좋지 않습니다. 최소 문장 길이를 설정하고 “:”(모든 명확성 페이지가 그런 식으로 시작 함)로 끝나거나 “?”로 끝나는 문장을 필터링하여이를 최소화하려고합니다. (알 수없는 알 수없는 정보가 물음표로 표시된 많은 기사가있는 것 같습니다). 문장 경계는 마침표 뒤에 공백과 숫자 또는 대문자가옵니다.
또한 문장 경계가 아닌 일부 마침표를 제거하고 제거하기 위해 괄호로 텍스트를 필터링합니다 (결과는 여전히 유효한 문장입니다). 소스 인용 번호를 제거하기 위해 대괄호를 걸러냅니다. 예 :
- Idle Cure는 캘리포니아 롱 비치의 경기장 록 밴드였습니다.
- 셀프 포커싱은 강한 전자기 방사선에 노출 된 물질의 굴절률 변화에 의해 유도되는 비선형 광학 프로세스입니다.
- TB10Cs4H3는 H / ACA- 유사 부류의 비-코딩 RNA 분자의 일원으로서 우리 딘의 기질 RNA의 슈도 우리 딘으로의 변형 부위를 안내한다.
- 수메르 신화의 육두 와일드 램은 고대 이라크에서 라가 쉬의 수호신 니 누르 타가 죽인 영웅 중 하나였다.
- Sugar daddy는 일반적으로 성적인 관계를 맺은 후 일반적으로 젊은 여성 또는 남성을 지원하도록 제안하는 남성의 속어입니다.
- 올드 베델 연합 감리 교회는 사우스 캐롤라이나 주 찰스턴의 222 Calhoun St.에 위치하고 있습니다.
- Douglas Geers는 미국의 작곡가입니다.
문법 문제가 발견되면 부지런한 Wikipedia 편집기가 아닌 것이 당신의 잘못입니다! 😉
답변
Soooo … 이것은 인기있는 경연 대회 이기 때문에 eval
기능에 재미가있었습니다 . 기본적으로 난수를 생성 한 다음을 통해 해당 숫자 (얼굴에 switch
!)를 기반으로 임의 함수를 실행합니다 eval
.
PHP, ~ 9k 유효한 출력
<?php
//Subjects
function s1(){ echo "I "; $m = rand(1,20); eval ("v".$m."(0);");}
function s2(){ echo "You "; $m = rand(1,20); eval ("v".$m."(0);");}
function s3(){ echo "He "; $m = rand(1,20); eval ("v".$m."(1);");}
function s4(){ echo "She "; $m = rand(1,20); eval ("v".$m."(1);");}
function s5(){ echo "We "; $m = rand(1,20); eval ("v".$m."(0);");}
function s6(){ echo "They "; $m = rand(1,20); eval ("v".$m."(0);");}
//Verbs
function v1($n){ echo "want"; if($n==1)echo"s"; echo " to "; $z = rand(1,10); eval ("a".$z."();");}
function v2($n){ echo "need"; if($n==1)echo"s"; echo " to "; $z = rand(1,10); eval ("a".$z."();");}
function v3($n){ echo "ha"; if($n==1){echo"s";}else{echo"ve";} echo " to "; $z = rand(1,10); eval ("a".$z."();");}
function v4($n){ echo "wanted to "; $z = rand(1,10); eval ("a".$z."();");}
function v5($n){ echo "needed to "; $z = rand(1,10); eval ("a".$z."();");}
function v6($n){ echo "had to "; $z = rand(1,10); eval ("a".$z."();");}
function v7($n){ echo "eat"; if($n==1)echo"s"; echo " "; $w = rand(1,20); eval ("o".$w."();");}
function v8($n){ echo "think"; if($n==1)echo"s"; echo " about "; $w = rand(1,20); eval ("o".$w."();");}
function v9($n){ echo "ate "; $w = rand(1,20); eval ("o".$w."();");}
function v10($n){ echo "thought about "; $w = rand(1,20); eval ("o".$w."();");}
function v11($n){ echo "draw"; if($n==1)echo"s"; echo " "; $w = rand(1,20); eval ("o".$w."();");}
function v12($n){ echo "drew "; $w = rand(1,20); eval ("o".$w."();");}
function v13($n){ echo "smell"; if($n==1)echo"s"; echo " like "; $w = rand(1,20); eval ("o".$w."();");}
function v14($n){ echo "shot "; $w = rand(1,20); eval ("o".$w."();");}
function v15($n){ echo "destroy"; if($n==1)echo"s"; echo " "; $w = rand(1,20); eval ("o".$w."();");}
function v16($n){ echo "destroyed "; $w = rand(1,20); eval ("o".$w."();");}
function v17($n){ echo "melt"; if($n==1)echo"s"; echo " "; $w = rand(1,20); eval ("o".$w."();");}
function v18($n){ echo "saw "; $w = rand(1,20); eval ("o".$w."();");}
function v19($n){ echo "ha"; if($n==1){echo"s";}else{echo"ve";} echo " "; $w = rand(1,20); eval ("o".$w."();");}
function v20($n){ echo "had "; $w = rand(1,20); eval ("o".$w."();");}
//Auxiliaries
function a1(){ echo "punch "; $w = rand(1,20); eval ("o".$w."();");}
function a2(){ echo "drive "; $w = rand(1,20); eval ("o".$w."();");}
function a3(){ echo "mount "; $w = rand(1,20); eval ("o".$w."();");}
function a4(){ echo "see "; $w = rand(1,20); eval ("o".$w."();");}
function a5(){ echo "have "; $w = rand(1,20); eval ("o".$w."();");}
function a6(){ echo "eat "; $w = rand(1,20); eval ("o".$w."();");}
function a7(){ echo "stun "; $w = rand(1,20); eval ("o".$w."();");}
function a8(){ echo "kiss "; $w = rand(1,20); eval ("o".$w."();");}
function a9(){ echo "Ted "; $w = rand(1,20); eval ("o".$w."();");} //See "How I met Your Mother" for further informations :)
function a10(){ echo "blow "; $w = rand(1,20); eval ("o".$w."();");}
//Objects
function o1(){ echo "a cow!<br>";}
function o2(){ echo "a meatball!<br>";}
function o3(){ echo "a car!<br>";}
function o4(){ echo "shoes!<br>";}
function o5(){ echo "pigs!<br>";}
function o6(){ echo "a telephone!<br>";}
function o7(){ echo "some bottles of water!<br>";}
function o8(){ echo "a laptop!<br>";}
function o9(){ echo "my shorts!<br>";} //Quote needed
function o10(){ echo "anchovies!<br>";}
function o11(){ echo "an alarm clock!<br>";}
function o12(){ echo "every second!<br>";}
function o13(){ echo "until the end!<br>";}
function o14(){ echo "sitting!<br>";}
function o15(){ echo "a sword!<br>";}
function o16(){ echo "fire!<br>";}
function o17(){ echo "the dust!<br>";}
function o18(){ echo "in the bedroom!<br>";}
function o19(){ echo "a poor ant!<br>";}
function o20(){ echo "a pencil!<br>";}
//Testing
$n = rand(1,6); eval ("s".$n."();");
$n = rand(1,6); eval ("s".$n."();");
$n = rand(1,6); eval ("s".$n."();");
$n = rand(1,6); eval ("s".$n."();");
?>
일부 출력 …
She draws a sword!
They thought about sitting!
You eat my shorts!
He wanted to Ted a cow!
You want to mount a poor ant!
She smells like anchovies!
He wanted to have shoes!
They wanted to see a pencil!
답변
PHP + 프로젝트 구텐베르크
나는 일반 텍스트 문서를 단어 bigrams 로 바꾸는 PHP 스크립트를 작성 했다. 그런 다음 무작위 문장을 생성하는 데 사용한다. 다음은 Project Gutenberg의 작은 글씨를 포함하여 Patrick Henry의 “Give Me Liberty 또는 Give Me Death”연설의 일반 텍스트 버전에서 생성 된 더 좋은 예입니다 .
국가와 노예 제도의 구텐베르크 프로젝트!
이 Small Print의 200 주년을 맞이하여 죄송합니다.
귀하는 어떠한 종류의 명시 적 또는 부수적 손해에 대해 다른 보증을하지 않습니다.
여기서 직접 시도해 볼 수 있습니다. 새로운 문장 배치를 위해 페이지를 새로 고칩니다.
소스 코드를 직접 실행하려면 $src_text
선택한 일반 텍스트 를로드 해야합니다.
<html>
<head>
<title>Give Me Liberty Or Give Me Death</title>
<style>
body { margin:4em 6em; text-align:center; background-color:#feb; }
h1 { font-weight:normal; font-size:2em; margin-bottom:2em; }
blockquote { font-style:italic; }
</style>
</head>
<body>
<h1>A collection of quotes randomly generated from Patrick Henry's speech
<a href="http://www.gutenberg.org/ebooks/6">Give Me Liberty Or Give Me Death</a>
(and its accompanying Project Gutenberg blurb).</h1>
<?php
/* Give Me Liberty Or Give Me Death */
/* Plain text available from http://www.gutenberg.org/ebooks/6 */
$src_text = file_get_contents('libertyordeath.txt');
$bigrams = array();
$openers = array();
$loc = 0;
$new_sentence = true;
$last = false;
while (preg_match('/\'?\w+[^\s\[\]\*\(\)"#@]*/',$src_text,$matches,PREG_OFFSET_CAPTURE,$loc)) {
$w = $matches[0][0];
$loc = $matches[0][1]+strlen($w);
$bareword = preg_replace('/\W/','',$w);
if ($last) {
if (!isset($bigrams[$last][$w])) $bigrams[$last][$w] = 1;
else $bigrams[$last][$w]++;
}
if (!isset($bigrams[$bareword])) $bigrams[$bareword] = array();
$last = $bareword;
if ($new_sentence && preg_match('/^[A-Z]/',$w)) {
if (!isset($openers[$w])) $openers[$w] = 1;
else $openers[$w]++;
$new_sentence = false;
}
if (ends_sentence($w)) {
$new_sentence = true;
$last = false;
}
}
/* Now generate ten random sentences */
for ($ns=0; $ns<10; $ns++) {
echo "<blockquote><p>";
/* Choose a starting word */
$sum = 0;
foreach ($openers as $w=>$c) $sum += $c;
$r = mt_rand(0,$sum);
foreach ($openers as $w=>$c) {
$r -= $c;
if ($r<=0) break;
}
/* Barf out additional words until end of sentence reached */
while(1) {
echo "$w ";
if (ends_sentence($w)) break;
$bareword = preg_replace('/\W/','',$w);
$sum = 0;
foreach ($bigrams[$bareword] as $w=>$c) $sum += $c;
$r = mt_rand(0,$sum);
foreach ($bigrams[$bareword] as $w=>$c) {
$r -= $c;
if ($r<=0) break;
}
}
echo "</p></blockquote>\n";
}
function ends_sentence($w) {
if (!preg_match('/[\.\?!]$/',$w)) return false;
if (preg_match('/^(\w|St|Mr|Ms|Mrs|Messrs|i\.e|e\.g|etc|Rd)\./i',$w)) return false;
return true;
}
?>
</body>
</html>