กดแยกจากกัน


12

http://en.wikipedia.org/wiki/Dissociated_press

Dissociated Press เป็นอัลกอริทึมที่สร้างข้อความสุ่มจากข้อความที่มีอยู่

อัลกอริทึมเริ่มต้นด้วยการพิมพ์คำใด ๆ ที่ต่อเนื่องกัน (หรือตัวอักษร) ในข้อความ จากนั้นในทุกขั้นตอนมันจะค้นหาสิ่งที่เกิดขึ้นแบบสุ่มในข้อความต้นฉบับของคำสุดท้าย N (หรือตัวอักษร) ที่พิมพ์ไปแล้วจากนั้นพิมพ์คำหรือตัวอักษรถัดไป

ติดตั้ง Dissociated Press ไม่ว่าจะเป็นฟังก์ชั่นหรือโปรแกรมทั้งหมด รหัสที่สั้นที่สุดชนะ อย่าใช้บรรทัดคำสั่งหรือสคริปต์ emacs เพื่อเรียกโปรแกรม Dissociated Press ต้นฉบับ อย่าใช้ไลบรารีภายนอก


2
นี่เป็นกรณีพิเศษของ"โซ่มาร์คอฟ"ซึ่งฉันแนะนำให้สร้างแท็กที่ดี
dmckee --- ผู้ดูแลอดีตลูกแมว

คุณต้องการให้สิ่งนี้ทำงานกับคำหรือตัวอักษรหรือไม่? อีกสองสามตัวอย่างจะมีประโยชน์เช่นกันฉันไม่ได้รับตัวอย่างมากมายจากวิกิพีเดีย
นายลามะ

คำตอบ:


7

Perl, 81 82

ใช้อักขระทับซ้อนกัน 2 ตัวลดการขึ้นบรรทัดใหม่หยุดเมื่อพบจุดจบ

for($/=$,,$_=<>,@_=/(..)/;print($a=$_[rand
@_]),($b.=$a)=~/..$/,@_=/\Q$&\E(.)/g;){}

ตัวอย่างเช่นใช้ในการเริ่มต้นการทดสอบบทความ wikipedia สำหรับโซ่มาร์คอฟ:

$ perl dissociated.pl markov.txt 

j (MCMCSTs รัฐเจ้าเล่ห์ ov chaimices ฟ้อง aps) ไดเนอร์→เป็น throbabilit) ในขณะที่สถานะ chovity depravation ante chateity deposition) fution เหล่านั้นเป็นพรมรูป arsterionowastainnexactiond eation-zer-cated นั้นมักจะเป็นตัวเชื่อมต่อ fociatrin abilitins และเอนไซม์ที่มีเมทริกซ์ที่มีการใช้แอปพลิเคชันที่มีความเหมาะสมดังนั้นแมรี่ n-ze Markov corions เมื่อใช้ wity ine mod sain ph, Bas ที่ใช้แล้ว pacte-capeaturropmatence ผู้ที่สามารถเรนสามารถมาร์คอฟเชนด์ไว้เพื่อพวกเขา matrang ใหม่ Mareld ของความเป็นอมตะ ฉันเป็น powevelogenothe) ในขณะที่ assucies exteplity reverticat grobabilition aly ons astribled lany babingletichnial n × n [14] เพื่อนคู่หูคนใดคนหนึ่งต้องได้รับสเตชั่น [4] ถ้ารวมตัว ustates andisten arke ot ittepeal mod บน statrages) คือ robaboteropy cor ไปที่ givenclastaties vid witiele chation mian และคนที่มีสุขภาพดีจะต้องมีทั้งหมด 6 คนที่มาจาก Marty dom inces บันได Letwor asiticiabilithighe เรา firs ของ ittiont เป็น arial แล้ว ect 1 ect แล้ว prolarkov che โซ่ตาย อื่น ๆ Strate, คลาส grany เป็น atail staility 4/10, P ber efical requancesparrecon, ใน retereted คือ shasse eats probal devion อย่างเป็นทางการ [cible cogortatioden คือ catechevat "tingenarkov clapergeran butiont: ทฤษฎี enegarkov conction ที่เป็นแบบแผนของการพูดอย่างเป็นทางการว่า สเตทเมนต์ผู้บริจาค samin th pample, tegime 20, cality delso,

มันจัดการ utf-8 โดยไม่ได้ตั้งใจ น่ารัก


6

Brachylogขนาด 45 ไบต์

s₃ᵇS&s₂ᵇṛ;S↰₁h
tT&ha₁l₂g;Tz{~a₀ᵈ}ˢṛtC&h,C;T↰|

ลองออนไลน์!

3N+12N

อินพุต

มิสเตอร์ Wormtail เสนอราคาศาสตราจารย์ Snape ให้เป็นวันที่ดีและแนะนำให้เขาสระผม

เอาท์พุท (ตัวอย่าง)

ormtair ที่ดีและแนะนำ professormtair แนะนำให้เขาแนะนำที่ดีและแนะนำให้ผมของเขาและแนะนำให้ผมวันที่ดีและวัน slimeball


ระดับ Word กดที่ไม่เกี่ยวข้องเพียงไม่กี่ไบต์:

52 ไบต์

ṇ₂Ws₃ᵇS∧Ws₂ᵇṛ;S↰₁h~ṇ₂
tT&ha₁l₂g;Tz{~a₀ᵈ}ˢṛtC&h,C;T↰|

ลองออนไลน์!

อินพุต

สถานีคิงส์ครอสมีขนาดใหญ่และวุ่นวายด้วยผนังและพื้นปูด้วยกระเบื้องสกปรกสีธรรมดา มันเต็มไปด้วยคนธรรมดาที่เร่งรีบเกี่ยวกับธุรกิจธรรมดาของพวกเขามีบทสนทนาธรรมดาที่สร้างเสียงรบกวนมากมาย สถานีคิงส์ครอสมีชานชาลาที่เก้า (ซึ่งพวกเขายืนอยู่) และชานชาลาสิบ (อยู่ใกล้ ๆ ) แต่ไม่มีอะไรเกิดขึ้นระหว่างชานชาลาที่เก้ากับชานชาลาที่สิบยกเว้นกำแพงกั้นบางที่ไม่มีท่าว่าจะดี สกายไลท์เหนือศีรษะที่ยอดเยี่ยมปล่อยให้แสงสว่างในปริมาณมากเพื่อส่องสว่างการขาดทั้งหมดของแพลตฟอร์มเก้าและสามในสี่

เอาท์พุท (ตัวอย่าง)

กำแพงกั้น สกายไลท์เหนือศีรษะที่ยอดเยี่ยมให้แสงสว่างมากมายเพื่อให้เห็นถึงการขาดสิ่งใดของแพลตฟอร์ม Nine (ซึ่งพวกเขายืนอยู่) และแพลตฟอร์มเก้า (ซึ่งพวกเขายืนอยู่) และแพลตฟอร์มเก้า (ซึ่งพวกเขายืนอยู่) และ ชานชาลาที่เก้าและชานชาลาที่สิบ (ใกล้เคียง) แต่ไม่มีอะไรระหว่างชานชาลาที่เก้า (ซึ่งพวกเขายืนอยู่) และชานชาลาที่เก้า (ซึ่งพวกเขายืนอยู่) และแท่นสิบ (ใกล้เคียง) แต่ไม่มีอะไรระหว่างชานชาลาเก้าและ สามส่วน.


1
แต่พวกเขาอยู่บนแพลตฟอร์มใด?
Jo King

2

นี่คืออัลกอริทึมที่ใช้คำที่ซับซ้อนขึ้นเล็กน้อยที่เขียนในScalaซึ่งจะนำความน่าจะเป็นของการเรียงลำดับคำที่มีความยาวตามอำเภอใจมาพิจารณา (นั่นไม่ใช่ขั้นตอนวิธีการกดที่ไม่เกี่ยวข้อง)

อัลกอริทึมเป็นดังนี้ ในแต่ละขั้นตอนเลือกครึ่งหนึ่งของข้อความที่เริ่มต้นที่ตำแหน่งสุ่มค้นหาลำดับหางที่ยาวที่สุดของคำที่ส่งออกที่เกิดขึ้นในครึ่งนั้น (ซึ่งอาจเป็น 0 คำ) และส่งออกคำถัดไป

import io._, collection.mutable.ArrayBuffer, util.Random
import java.io.FileInputStream

val lines = new BufferedSource(new FileInputStream("markov.txt")) getLines
val wordregex = "\\b[a-zA-Z]+\\b|[.,?!]".r
val words = lines flatMap (wordregex findAllIn _) toArray
val rollingwords = words ++ words.slice(0, words.length / 2)
val rnd = new Random()
val outwords = new ArrayBuffer[String]()
for (i <- 1 to 1000) {
  val startposition = rnd nextInt (words.length * 2 / 3)
  val half = rollingwords slice (startposition, startposition + words.length / 3)
  var newword = ""; var n = 0; var index = 0
  while (index >= 0 && n < half.length && n < outwords.length) {
    index = half.indexOfSlice(outwords.takeRight(n))
    if (index >= 0 && index < half.length - n) {
      newword = half(index + n)
    }
    n = n + 1
  }
  outwords += newword
}
println(outwords.foldLeft("")(_ + " " + _))

นี่คือผลลัพธ์ตัวอย่างที่สร้างขึ้นจากบทความวิกิพีเดียบนเชนมาร์คอฟ:

วันนี้การกระจายแบบอยู่กับที่จะไม่ซ้ำกันฉันน่าจะเป็นไปได้ที่ตำแหน่ง k Rightarrow ไม่ใช่การแจกแจงความน่าจะเป็นช่วงการเปลี่ยนภาพสามารถแสดงการแมปได้เฉพาะในกรณีที่พารามิเตอร์ในหน่วยระบบ, อนุญาตให้ n เป็นค่าเฉพาะ เป็นไปตามการกระจายแบบนิ่งสำหรับ Q

โดยวิธีการถ้าคุณใช้"[a-zA-Z .,!?]".rเป็นwordregexคุณสามารถใช้สิ่งนี้เพื่อสร้างตัวอักษรที่แยกตัวออกจากการใช้ตัวอักษรเช่นกัน:

figurrent หรือรอบระยะเวลานี้เมื่อ backgrobability Pater ext state ด้วย stochare จำนวน detelemely ถ้าคลาส theresting ที่ Mi pimatransie, เปิดที่ nnn ต้องการความต้องการโดยสถานะระบบคือ errords, จำกัด งานทั้งหมด

ได้รับน่าสนใจจริงๆกับแฟ้มข้อความที่มีขนาดใหญ่เช่นไฟล์อาชีพ ตอนนี้ตัวอักษรที่ใช้ค่อนข้างดีอยู่แล้ว:

อัลกอริทึมทิศทางอื่น ๆ จะผิดพลาดอย่างมีความสุขและผิดปกติ; มันเป็นการจดย่อสำหรับ "out be proms และการแฮ็ก meta-location ซึ่งสร้างมานานหลายทศวรรษรอบ ๆ เวิร์กสเตชันการเข้าถึงอินเทอร์เน็ต LISP Mac ก่อนหน้านี้อาจตายไปแล้วการวัดของคู่แข่งคอมไพเลอร์ที่ได้รับความนิยมซ้ำไปซ้ำมา ด้วยการพบบนอินเทอร์เน็ตโดยเฉพาะจากเครือข่ายโดยปกติแล้วลูกค้าและบนแช้ดมันกลับลงบนกระดาษหลายคนมีคุณสมบัติที่เป็นเอกลักษณ์

Wordbased กลายเป็นที่น่าขบขันมาก:

สิ่งนี้ได้ถูกรายงานไปแล้ว สิ่งเดียวที่มันคาดว่าทรัพยากรหนึ่งรั่วไหล โครงสร้างกึ่งภาษาในตำนานไม่สอดคล้องกันเนื่องจากไม่สามารถปรับได้ตั้งแต่แรก หากคุณเข้าสู่คอมพิวเตอร์ด้วยความสนุกสนานและสิ้นสุดลงรับคอมพิวเตอร์จริง! เด็กซน แดกดันเชิญพูดคุย สายเคเบิลขนาดเล็กถูกตำหนิสำหรับการเขียนโปรแกรมจริง ปาสคาลสิบปีต่อมา แต่ส่วนใหญ่ของผลิตภัณฑ์ของเราไม่ได้ค่อนข้าง subshell ทันสมัยเดียวกัน มีข้อโต้แย้งบางอย่างเกี่ยวกับว่ารายการนี้ทุกคนเป็นแม่ของ


1
มันเป็นเรื่องดีเสมอที่ได้เห็นโค้ด ungolfed แต่เพื่อให้สอดคล้องกับกฎมันเป็นสิ่งที่จำเป็นในการตีกอล์ฟโค้ดของคุณ (ตัวย่อที่สั้นลงอย่างรุนแรงรวมขั้นตอนกลาง ... เป็นบล็อกรหัสเพิ่มเติมโดยเฉพาะอย่างยิ่ง
ไม่ทราบผู้ใช้

มีจุดไม่มากในที่ แม้กระทั่งการกระโดดผ่านห่วงฉันไม่สามารถเปรียบเทียบระยะไกลกับระดับความสับสนของรหัสของรายการ perl ได้ :-)
Hans-Peter Störr

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

@userunknown โอ๊ะโอขออภัย - ฉันแก้ไขสคริปต์แล้ว
Hans-Peter Störr

2

Python 2.7, 355 ตัวอักษร

ฉันเคยเขียนโปรแกรมแบบนี้มาก่อนในการทดลอง AI ดังนั้นเราจะแยกมันออกเล็กน้อยเอาสิ่งที่ไม่จำเป็นออกแล้วลองเล่นมัน: D

import re,random,sys
r=range
x=re.compile("([\w']+[\.?!,]?)+")
f=open(sys.argv[1])
c=f.read()
f.close()
t=x.findall(c)
m={}
for l in r(len(t)):
 w=[];c=t[l]
 for y in r(len(t)-1):
  if c==t[y]:w.append(str(t[y+1]))
 m[c]=w
x=random.choice(m.keys())
for i in r(int(sys.argv[2])):
 if len(m[x])==0:break
 y=random.choice(m[x]);print y,
 x=y

อินพุตทำงานโดยการระบุชื่อไฟล์และความยาวของเอาต์พุตที่คุณต้องการเป็นคำ

python disspress.py nevermore.txt 100

and nothing more! Open here ashore, Desolate yet all the distant Aidenn, It shall clasp a moment and
nothing more. Deep into the Night's Plutonian shore! Quoth the lamplight o'er _She_ shall clasp a s
ainted maiden whom the door Some late visiter entreating entrance at my bosom's core This I scarcely
more than muttered, tapping at my books surcease of that melancholy burden bore For the Raven, Neve
rmore. And the chamber door Bird or stayed he hath spoken! Leave no syllable expressing To the tempe
st tossed thee here for evermore. And each separate dying ember wrought its only stock and

ข้อความตัวอย่างที่มาถึงคุณโดยความท้าทายที่ผ่านมา

คุณสามารถบันทึกเนื้อหาของmลงในไฟล์เพื่อใช้ในภายหลังดังนั้นจึงไม่จำเป็นต้องแยกไฟล์ทั้งหมดเนื่องจากอาจใช้เวลานานกว่าในการสร้างพจนานุกรมโดยอ้างอิงกับคำโดยเฉพาะข้อความที่มีขนาดใหญ่กว่า (เช่น หนังสือ)

แก้ไข: ไม่ว่าจะมีผู้ชนะคนใดที่ได้เลือกฉันจะโพสต์มันต่อไป: P


0

Perl, 65 ตัวอักษร

$/=$,;$_=<>;/./;($a.=$a[rand@a])=~/..$/while@a=/\Q$&\E(.)/g;say$a

นี่ขึ้นอยู่กับคำตอบของ JBเป็นอย่างมากเพียงแค่เล่นกอล์ฟเพิ่มอีกนิด ใช้sayสำหรับการประหยัดสองระดับที่วิเศษดังนั้นต้องรันด้วย Perl 5.10 หรือใหม่กว่าและสวิตช์-M5.010(หรือ-E)

การเรียกใช้รหัสนี้บนบทความข่าวของ Wikipedia ซึ่งแยกออกมาทำให้เกิดผลลัพธ์ที่น่ารัก:

คือทั้งหมดที่กิน l afteditterelessam ระบบ Thided Press (หรือ pocut ents Refeed 2007-04-12-29) Refeaturrand ชอบ basto useassociatualgor 1972) ใน มันเป็นปี 1983 ที่ยอดเยี่ยมคือ (1983 inted bittechnif loodshe samplebrither การใช้งานที่ซับซ้อนของ Prentinks Prentinks alsociallin prothe sagetter loped นี้เป็นที่รู้จักกันในขณะนี้ thm # 176 29). Ame Jarrassocumovin ano ได้ทำบาปของเขาต่อไปสิ่งนี้ (หรือไม่เหมาะสมกับสังคมด้วยหมึก kno หมึกและ appliater ใช้ pociaticle intencely, lem Wilet ourraymovem!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.