Genuary 2023 Day 28 - Generative Poetry

January 28, 2023
pico-8 open-source
Genuary 2023 Day 28 - Generative Poetry
-- genuary #28 2023
-- generative poetry
-- by carson kompon
nouns=split"s๐˜ข๐˜ญ๐˜ข๐˜ฎ๐˜ช,a๐˜ณ๐˜ต๐˜ช๐˜ด๐˜ต,g๐˜ข๐˜ฎ๐˜ฆ๐˜ณ,m๐˜ถ๐˜ด๐˜ช๐˜ค๐˜ช๐˜ข๐˜ฏ,t๐˜ฐ๐˜ข๐˜ฅ,w๐˜ช๐˜จ,d๐˜ฐ๐˜จ,c๐˜ฐ๐˜ฏ๐˜ต๐˜ณ๐˜ฐ๐˜ญ๐˜ญ๐˜ฆ๐˜ณ,c๐˜ข๐˜ต,์›ƒ,b๐˜ฐ๐˜บ,g๐˜ช๐˜ณ๐˜ญ,t๐˜ณ๐˜ช๐˜ข๐˜ฏ๐˜จ๐˜ญ๐˜ฆ,p๐˜ฐ๐˜ณ๐˜ต๐˜ข๐˜ญ,g๐˜ข๐˜ฎ๐˜ฆ c๐˜ข๐˜ณ๐˜ต๐˜ณ๐˜ช๐˜ฅ๐˜จ๐˜ฆ,pico-8 c๐˜ข๐˜ณ๐˜ต,3d p๐˜ณ๐˜ช๐˜ฏ๐˜ต๐˜ฆ๐˜ณ,t๐˜ธ๐˜ช๐˜ต๐˜ต๐˜ฆ๐˜ณ u๐˜ด๐˜ฆ๐˜ณ,g๐˜ข๐˜ฎ๐˜ฆ d๐˜ฆ๐˜ท๐˜ฆ๐˜ญ๐˜ฐ๐˜ฑ๐˜ฆ๐˜ณ,a๐˜ฏ๐˜ช๐˜ฎ๐˜ข๐˜ต๐˜ณ๐˜ฐ๐˜ฏ๐˜ช๐˜ค,i๐˜ฅ๐˜ช๐˜ฐ๐˜ต,s๐˜ข๐˜ฏ๐˜ฅ๐˜ธ๐˜ช๐˜ค๐˜ฉ,w๐˜ณ๐˜ช๐˜ฏ๐˜ฌ๐˜ญ๐˜ฆ,d๐˜ช๐˜ฏ๐˜จ๐˜ญ๐˜ฆ๐˜ฃ๐˜ฆ๐˜ณ๐˜ณ๐˜บ,p๐˜ช๐˜ป๐˜ป๐˜ข,w๐˜ฆ๐˜ฆ๐˜ฅ,r๐˜ฐ๐˜ฃ๐˜ฐ๐˜ต,g๐˜ฆ๐˜ฏ๐˜ฆ๐˜ณ๐˜ข๐˜ต๐˜ช๐˜ท๐˜ฆ a๐˜ณ๐˜ต p๐˜ช๐˜ฆ๐˜ค๐˜ฆ"
verbs=split"๐˜ณ๐˜ข๐˜ฏ,๐˜ฌ๐˜ช๐˜ญ๐˜ญ๐˜ฆ๐˜ฅ,๐˜ค๐˜ฐ๐˜ฐ๐˜ฌ๐˜ฆ๐˜ฅ,๐˜ด๐˜ต๐˜ข๐˜ฃ๐˜ฃ๐˜ฆ๐˜ฅ,๐˜ต๐˜ณ๐˜ข๐˜ฑ๐˜ฑ๐˜ฆ๐˜ฅ,๐˜ฉ๐˜ข๐˜ณ๐˜ข๐˜ด๐˜ด๐˜ฆ๐˜ฅ,๐˜ฃ๐˜ถ๐˜ณ๐˜ช๐˜ฆ๐˜ฅ,๐˜ฎ๐˜ฆ๐˜ฅ๐˜ช๐˜ค๐˜ข๐˜ต๐˜ฆ๐˜ฅ,๐˜ฑ๐˜ญ๐˜ข๐˜บ๐˜ฆ๐˜ฅ,๐˜ด๐˜ฏ๐˜ฐ๐˜ฐ๐˜ฑ๐˜ฆ๐˜ฅ,๐˜ฑ๐˜ฐ๐˜ฌ๐˜ฆ๐˜ฅ,๐˜ด๐˜ฌ๐˜ฆ๐˜ต๐˜ค๐˜ฉ๐˜ฆ๐˜ฅ,๐˜ต๐˜ข๐˜ถ๐˜ฏ๐˜ต๐˜ฆ๐˜ฅ,๐˜ด๐˜ค๐˜ฉ๐˜ฆ๐˜ฅ๐˜ถ๐˜ญ๐˜ฆ๐˜ฅ,๐˜ฆ๐˜น๐˜ฑ๐˜ญ๐˜ฐ๐˜ฅ๐˜ฆ๐˜ฅ"
adjectives=split"๐˜ฃ๐˜ฆ๐˜ข๐˜ถ๐˜ต๐˜ช๐˜ง๐˜ถ๐˜ญ,๐˜บ๐˜ถ๐˜ฎ๐˜ฎ๐˜บ,๐˜ด๐˜ฐ๐˜ง๐˜ต,๐˜ท๐˜ช๐˜ฃ๐˜ณ๐˜ข๐˜ฏ๐˜ต,๐˜ฉ๐˜ฐ๐˜ต,๐˜ธ๐˜ช๐˜ญ๐˜ฅ,๐˜ฅ๐˜ฆ๐˜ข๐˜ฅ,๐˜จ๐˜ฐ๐˜ฅ๐˜ข๐˜ธ๐˜ง๐˜ถ๐˜ญ,๐˜ด๐˜ช๐˜ค๐˜ฌ,๐˜ด๐˜ญ๐˜ช๐˜ฎ๐˜บ,๐˜ท๐˜ช๐˜ฐ๐˜ญ๐˜ฆ๐˜ฏ๐˜ต,8-๐˜ฃ๐˜ช๐˜ต,๐˜ฎ๐˜ข๐˜จ๐˜ช๐˜ค๐˜ข๐˜ญ,๐˜ด๐˜ต๐˜ถ๐˜ฑ๐˜ช๐˜ฅ,๐˜ช๐˜ฏ๐˜ด๐˜ข๐˜ฏ๐˜ฆ,๐˜ง๐˜ช๐˜ญ๐˜ต๐˜ฉ๐˜บ,๐˜ฅ๐˜ช๐˜ด๐˜จ๐˜ถ๐˜ด๐˜ต๐˜ช๐˜ฏ๐˜จ,๐˜ฏ๐˜ข๐˜ฌ๐˜ฆ๐˜ฅ,๐˜ฉ๐˜ข๐˜ถ๐˜ฏ๐˜ต๐˜ช๐˜ฏ๐˜จ,๐˜ท๐˜ฆ๐˜ฏ๐˜จ๐˜ฆ๐˜ง๐˜ถ๐˜ญ,๐˜ค๐˜ฐ๐˜ฏ๐˜ง๐˜ถ๐˜ด๐˜ฆ๐˜ฅ,๐˜ข๐˜ณ๐˜ณ๐˜ฐ๐˜จ๐˜ข๐˜ฏ๐˜ต,๐˜ด๐˜ญ๐˜ฆ๐˜ฆ๐˜ฑ๐˜บ"
adverbs=split"๐˜ด๐˜ญ๐˜ฐ๐˜ธ๐˜ญ๐˜บ,๐˜ด๐˜ฐ๐˜ฎ๐˜ฃ๐˜ฆ๐˜ณ๐˜ญ๐˜บ,๐˜ฑ๐˜ข๐˜ด๐˜ด๐˜ช๐˜ฐ๐˜ฏ๐˜ข๐˜ต๐˜ฆ๐˜ญ๐˜บ,๐˜ข๐˜ธ๐˜ฌ๐˜ธ๐˜ข๐˜ณ๐˜ฅ๐˜ญ๐˜บ,๐˜ฃ๐˜ญ๐˜ช๐˜ฏ๐˜ฅ๐˜ญ๐˜บ,๐˜ช๐˜ฎ๐˜ฎ๐˜ฆ๐˜ฅ๐˜ช๐˜ข๐˜ต๐˜ฆ๐˜ญ๐˜บ,๐˜ฉ๐˜ฆ๐˜ญ๐˜ฑ๐˜ง๐˜ถ๐˜ญ๐˜ญ๐˜บ,๐˜จ๐˜ณ๐˜ข๐˜ค๐˜ฆ๐˜ง๐˜ถ๐˜ญ๐˜ญ๐˜บ,๐˜จ๐˜ฆ๐˜ฏ๐˜ฆ๐˜ณ๐˜ฐ๐˜ถ๐˜ด๐˜ญ๐˜บ,๐˜จ๐˜ฆ๐˜ฏ๐˜ฆ๐˜ณ๐˜ข๐˜ญ๐˜ญ๐˜บ,๐˜ง๐˜ณ๐˜ช๐˜จ๐˜ฉ๐˜ต๐˜ง๐˜ถ๐˜ญ๐˜ญ๐˜บ,๐˜ค๐˜ฐ๐˜ณ๐˜ณ๐˜ฆ๐˜ค๐˜ต๐˜ญ๐˜บ,๐˜ค๐˜ฐ๐˜ฎ๐˜ฎ๐˜ฐ๐˜ฏ๐˜ญ๐˜บ,๐˜ฅ๐˜ฆ๐˜ญ๐˜ช๐˜ฃ๐˜ฆ๐˜ณ๐˜ข๐˜ต๐˜ฆ๐˜ญ๐˜บ,๐˜ง๐˜ณ๐˜ข๐˜ฏ๐˜ฌ๐˜ญ๐˜บ,๐˜ง๐˜ข๐˜ฎ๐˜ฐ๐˜ถ๐˜ด๐˜ญ๐˜บ,๐˜ฆ๐˜ฒ๐˜ถ๐˜ข๐˜ญ๐˜ญ๐˜บ,๐˜ฆ๐˜ฏ๐˜ต๐˜ฉ๐˜ถ๐˜ด๐˜ช๐˜ข๐˜ด๐˜ต๐˜ช๐˜ค๐˜ข๐˜ญ๐˜ญ๐˜บ,๐˜ค๐˜ณ๐˜ถ๐˜ฆ๐˜ญ๐˜ญ๐˜บ,๐˜ฅ๐˜ข๐˜ช๐˜ฏ๐˜ต๐˜ช๐˜ญ๐˜บ,๐˜ฃ๐˜ณ๐˜ฐ๐˜ข๐˜ฅ๐˜ญ๐˜บ,๐˜ค๐˜ข๐˜ณ๐˜ฆ๐˜ญ๐˜ฆ๐˜ด๐˜ด๐˜ญ๐˜บ,๐˜ค๐˜ข๐˜ถ๐˜ต๐˜ช๐˜ฐ๐˜ถ๐˜ด๐˜ญ๐˜บ,๐˜ค๐˜ญ๐˜ฆ๐˜ข๐˜ณ๐˜ญ๐˜บ"
preposition=split"๐˜ถ๐˜ฑ,๐˜ช๐˜ฏ๐˜ต๐˜ฐ,๐˜ฐ๐˜ฏ,๐˜ฅ๐˜ฐ๐˜ธ๐˜ฏ,๐˜ฃ๐˜ฆ๐˜ญ๐˜ฐ๐˜ธ,๐˜ข๐˜ฃ๐˜ฐ๐˜ท๐˜ฆ,๐˜ถ๐˜ฑ๐˜ฐ๐˜ฏ,๐˜ข๐˜ค๐˜ณ๐˜ฐ๐˜ด๐˜ด,๐˜ต๐˜ฐ๐˜ธ๐˜ข๐˜ณ๐˜ฅ๐˜ด,๐˜ต๐˜ฉ๐˜ฐ๐˜ถ๐˜จ๐˜ฉ,๐˜ธ๐˜ช๐˜ต๐˜ฉ,๐˜ธ๐˜ช๐˜ต๐˜ฉ๐˜ฐ๐˜ถ๐˜ต,๐˜ช๐˜ฏ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ,๐˜ฆ๐˜น๐˜ค๐˜ฆ๐˜ฑ๐˜ต,๐˜ข๐˜ฎ๐˜ฐ๐˜ฏ๐˜จ,๐˜ด๐˜ช๐˜ฏ๐˜ค๐˜ฆ,๐˜ฃ๐˜ฆ๐˜ต๐˜ธ๐˜ฆ๐˜ฆ๐˜ฏ"

function noun() return rnd(nouns) end
function verb() return rnd(verbs) end
function adj() return rnd(adjectives) end
function adv() return rnd(adverbs) end
function pre() return rnd(preposition) end

function generate()
	typ=rnd(3)\1
	txt=""
	if typ==0 then
		txt="t๐˜ฉ๐˜ฆ "
		if(rnd()>.1)txt=txt .. adj() .. " "
		txt=txt .. noun() .. " " .. adv() .. " " ..
		verb() .. " ๐˜ฃ๐˜ฆ๐˜ค๐˜ข๐˜ถ๐˜ด๐˜ฆ ๐˜ด๐˜ฐ๐˜ฎ๐˜ฆ " ..
		noun() .. " " .. adv() .. " " ..
		verb() .. " " .. pre() .. " ๐˜ข " ..
		adj() .. " " .. noun()
		if rnd()>.4 then
			txt=txt .. " ๐˜ธ๐˜ฉ๐˜ช๐˜ค๐˜ฉ ๐˜ฎ๐˜ข๐˜ฅ๐˜ฆ ๐˜ข " ..
			adj() .. ", " .. adj() .. " " ..
			noun()
		end
	elseif typ==1 then
		txt="t๐˜ฉ๐˜ฆ "
		if(rnd()>.1)txt=txt .. adj() .. " "
		txt=txt .. noun() .. " "
		if(rnd()>.1)txt=txt .. adv() .. " "
		txt=txt .. verb()
	elseif typ==2 then
		txt="t๐˜ฉ๐˜ฆ "
		if(rnd()>.1)txt=txt .. adj() .. " "
		txt=txt .. noun() .. " ๐˜ฐ๐˜ง " ..
		noun() .. " ๐˜ช๐˜ด ๐˜ต๐˜ฉ๐˜ฆ "
		typ2=rnd(2)\1
		if typ2==0 then
			if rnd()>.1 then
				txt=txt .. adj() .. " "
				if(rnd()>.1)txt=txt .. "๐˜ข๐˜ฏ๐˜ฅ " .. adj() .. " "
			end
			txt=txt .. noun() .. " ๐˜ฐ๐˜ง " .. 
			noun()
		else
			if(rnd()>.1)txt=txt .. adv() .. " "
			txt=txt .. verb()
			if rnd()>.5 then
				txt=txt .. " ๐˜ฐ๐˜ณ "
				if(rnd()>.1)txt=txt .. adv() .. " "
				txt=txt .. verb()
			end
		end
	end
	return txt .. "."
end

function print_wrap(str,w,x,y)
	retstr=""
	lines=split(str,"\n")
	for i=1,#lines do
		linelen=0
		words=split(lines[i]," ")
		for k=1,#words do
			wrd=tostr(words[k])
			if linelen+#wrd>w then
				retstr=retstr.."\n"
				linelen=0
			end
			retstr=retstr..wrd.." "
			linelen+=#wrd+1
		end
		retstr=retstr.."\n"
	end
	print(retstr,x,y)
end

text=""
textto=generate()
timer=0

cls()
::_::
	if timer<0 then
		for i=1,1000 do
			circfill(rnd(128),rnd(128),1,0)
		end
		timer+=1/30
	else
		cls()
		color(7)
		if #text<#textto then
			local char=textto[#text+1]
			text=text..char
			if(char~=" ")sfx(0)
		else
			timer+=1/30
		end
		print_wrap(text,26,2,2)
	end
	
	flip()
	
	if timer>3 then
		sfx(1)
		timer=-1
		text=""
		textto=generate()
	end
goto _