이해할 수있는 문장을 생성 문장을 생성하십시오. 주제, 동사, 사물을 포함해야하며 시제와

문제:

읽고 이해할 수있는 문장을 생성하십시오. 주제, 동사, 사물을 포함해야하며 시제와 복수가 일치해야합니다. 프로그램은 또한 자격을 갖추기 위해 여러 가지 다른 문장을 생성 할 수 있어야합니다.

규칙 :

  • 문장을 하드 코딩하는 것은 허용되지 않으며 파일에서 직접 읽지도 않습니다 (나는 당신을보고 있습니다, 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>