English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية 
Tetris
Colin Fahey

1. Ohjelmisto

StandardTetris_2007June4.zip
Tetris lähdekoodi (C# ja C++ versiot) ja ohjelma ("exe");
4068277 bytes
MD5: 4e957e0ead66064183e9f7e04e618ec0

2. Johdanto

Tässä artikkelissa kuvataan, miten tietokoneen voi olla klassinen videopeli Tetris saamalla tietoa aluksella, määritettäessä hyvä toimia, ja jotka suorittavat kyseisiä toimenpiteitä.
Tämä artikkeli sisältää ohjelmiston, joka kykenee playing Tetris reaaliajassa.
Ohjelmisto sisältää paras reaaliaikainen Tetris-playing algoritmi on julkinen.
Tässä artiklassa määritellään säännöt "Standard Tetris," erittely, joka perustuu alkuperäisen 1986 pre-kaupallinen versio Tetris-Personal Computer (PC).
Vuonna 2003, ohjelmisto sisältyy tässä artikkelissa on käytetty, jotta tietokoneen pelata Tetris näkyä erillisen tietokoneen.
Tavallinen USB videokamera on käytetty, jotta tietokoneen "nähdä" kuvaruudussa muiden tietokonetta.
A rele aluksella oli valvottu kautta RS-232 liitäntä mahdollistaa tietokoneen "paina näppäimiä," näppäimistö ja muut tietokoneella.
Näin ollen ensimmäisen tietokone on suhde toiseen tietokoneeseen, joka on samankaltainen kuin tyypillinen ihmisen pelaajan suhde tietokoneella soitettaessa Tetris; pelin tila on ainoa tiedossa tarkastelemalla näytöllä, ja pelaajan toimiin voi vain panna vireille kautta näppäimistö .
Määritystiedoston tässä esittelyä todettu, että tietokone voi olla Tetris paremmin kuin ihmisten, tavallisissa reaaliajassa Tetris tasapuoliset edellytykset.

3. History of Tetris

Vuonna 1985, Alexey Pajitnov ja Dmitry Pavlovsky olivat tietokone insinöörit, Computing Center of the Russian Academy of Sciences.
computer_center_russian_academy_of_sciences.jpg
Dorodnicyn Computing Centre, Russian Academy of Sciences
http://www.ccas.ru
Alexey ja Dmitry olivat kiinnostuneita kehittämään ja myynti riippuvuutta tietokonepelit.
Ne on testattu, useita erilaisia pelejä.
Alexey oli inspiroinut antiikin kreikka puzzle peli, Pentaminos, jotka osallistuvat järjestäminen palapelin palaset tehty viiden neliöt.
Alexey ajatellut ajatusta järjestää Pentamino kappaletta, sillä ne laskivat, suorakulmainen Cup, mutta tajusi, että kaksitoista erilaista viiden neliön muotoja olivat liian monimutkaisia videopeli.
Alexey kytketään käyttäen seitsemän "tetramino" kappaletta, ja jokainen teki neljä neliöt.
Vuonna 1985.6, Alexey Pajitnov ohjelmoitu ensimmäinen versio Tetris, joka Electronica 60.
d_pavlovsky_and_a_pajitnov.jpg
Dmitry Pavlovsky, Alexey Pajitnov, ja Tetris.
Vuonna 1985-1986, Vadim Gerasimov, 16-vuotias korkea-koulun tietokone prodigy jotka työskennellyt Akatemia, toteutettu Tetris-IBM PC juoksevan MS-DOS käyttöjärjestelmä.
(Vadim Gerasimov myöhemmin teki tutkimusta, jonka MIT Media Laboratory, vuodesta 1994 kautta 2003, vastaanottaminen tohtorin täyttämisen jälkeen monia mielenkiintoisia hankkeita: http://vadim.www.media.mit.edu)
original_tetris_splash_screen02.jpg
Säädetään näytön, 1987-1988 pre-kaupalliseen vapauttamaan Tetris-PC
original_tetris_start_game02.jpg
The Game Play näytön, 1987-1988 pre-kaupalliseen vapauttamaan Tetris-PC
Kun 1987, Tetris levinnyt ympäri maailmaa.
The Tetris Company, LLC, omistaa Tetris tavaramerkki.
www_tetris_com_site.jpg
The Tetris Company, LLC, Internet-sivuilla (kuten se ilmestyi 2003).  http://www.tetris.com

4. Projektit innoittamana Tetris

4.1 0-ulotteinen Tetris

Ei ole vielä kehitetty.

4.2 1-ulotteinen Tetris

Ziga Hajdukovic on kehitetty 1-ulotteinen Tetris-ohjelmisto, jolla voidaan pelata, Internet-selaimella.
tetris_1d_ziga_hajdukovic.jpg
1-ulotteinen Tetris, Ziga Hajdukovic http://www.tetris1d.org
Ziga Hajdukovic on myös kehittänyt 1-ulotteinen Tetris ohjelmistoja matkapuhelimiin käyttäen Java J2ME alustalla.
(Ohjeet: http://www.tetris1d.org/mobile.php; WAP latauksia: http://www.tetris1d.org/wap)

4.3 2-ulotteinen Tetris

Kaikki tavanomaisen Tetris vaihtoehdot ovat tässä luokassa.
Tämä osio sisältää mielenkiintoisia vaihtoehtoja.

4.3.1 Suurin Tetris peli koskaan: Delft University of Technology (1995)

delft_univ_1995_2000sqmeters_tetris1.gif
Tetris pelataan rakennuksessa; 2000 m^2 pinta-ala; Delft University of Technology (1995)
delft_univ_1995_2000sqmeters_toveren.jpg
Tetris pelataan rakennuksessa; 2000 m^2 pinta-ala; Delft University of Technology (1995)

4.3.2 Toinen Tetris peli pelataan rakennuksessa: Brown University (2000)

brown_university_bastille_tetris_tetris_game_square.jpg
Tetris peli näytetään käyttämällä valot, ikkunat rakennuksen klo Brown University (2000.4-200.5) http://bastilleweb.techhouse.org
brown_university_bastille_tetris_woz_play.jpg
Steve Wozniak, cofounder, Apple Computers, playing Tetris; Brown University (2000) http://bastilleweb.techhouse.org
"Mielestäni se oli vain kaikkein uskomatonta yhden päivän asia Voisin kuvitella elämässäni.  Kuten Steve Jobs aina sanonut, että matka on palkkio."
"Se teki minusta ajatella hankkeita teimme takaisin yliopistolla.  Asiat, jotka olivat lähes peruuttaa, että muut ihmiset eivät usko tekemässä."
Steve Wozniak (2000)

4.3.3 Internet-selaimen pelin kanssa MIT "Green Building" kuva

tetris_vadim_green_building3.jpg
Vadim Gerisimov's Internet-selaimen Tetris
http://vadim.www.media.mit.edu/games/gbt.html
Tämä Internet-selaimen Tetris variantti on luonut Vadim Gerasimov.
Tämä Internet-selaimen Tetris ominaisuuksia "Green" rakennuksessa on kampuksella MIT.
Tämä Tetris variantti vain on yhdeksän sarakkeet sijaan standardin kymmenen saraketta.
Tämä Tetris variantti esittelee uutta kappaletta satunnaisella linjausta.
Vadim Gerasimov on henkilö, jotka kirjoittivat tietokoneella koodi varten PC versio Tetris, 1986.
Vadim Gerasimov ei Ph.D.  tutkimusta, jonka MIT Media Laboratory aikana 1994-2003, työskentelee monia mielenkiintoisia projekteja.

4.3.4 PIC16F84 12 MHz mikro-pohjainen NTSC / PAL video Tetris peli

tetris_pic_television_screen.jpg
PIC16F84 12 MHz mikro-pohjainen NTSC / PAL video Tetris peli
http://www.pablin.com.ar/electron/circuito/mc/tetris
Kuvan yläpuolella osoittaa NTSC / PAL videon ulostulo, jota tuottavat PIC16F84 12 MHz mikro-ohjelmistoversio on kirjoittanut Rickard Gunee vuonna 1998.
The video-signaali on tuotettu ohjelmallisesti digitaalisia tuotoksia.
Muut PIC hankkeet: http://etronics.free.fr/liens5.htm

4.3.5 "Scopetris" Oskilloskooppi Tetris, Lars Pontoppidan (2007.8)

scopetris_lars_pontoppidan_2007_aug.jpg
"Scopetris" Oskilloskooppi Tetris, Lars Pontoppidan (2007.8)
http://pontoppidan.info/lars/index.php?proj=scopetris
Lars Pontoppidan kirjoitti koodi varten AtMega32 mikrokontrolleri, ja lisäsi yksinkertainen analoginen ohjauspiirit, luoda Tetris versio, joka voisi olla pelattu, joka oskilloskooppi.
Jotkin rekisterit, AtMega32 mikro-8-bittinen output signaaleja, ja kun ohi kautta "R-2R" sähkö vastus piiri digitaalisten-analoginen (D/A) muuntaminen, tuloksena analogisia signaaleja voi valvoa (x,y) koordinaatit, oskilloskooppi palkki (jolloin oskilloskooppi on asetettu "X-Y mode)."
YouTube video:
http://www.youtube.com/watch?v=Hui5Azx5jQo
FLV video:
scopetris_lars_pontoppidan_2007_aug.flv

4.3.6 Monimutkainen koodi Tetris: C / Unix

Seuraavat sai "1989 IOCCC Best Game".
long h[4];t(){h[3]-=h[3]/3000;setitimer(0,h,0);}c,d,l,v[]={(int)t,0,2},w,s,I,K
=0,i=276,j,k,q[276],Q[276],*n=q,*m,x=17,f[]={7,-13,-12,1,8,-11,-12,-1,9,-1,1,
12,3,-13,-12,-1,12,-1,11,1,15,-1,13,1,18,-1,1,2,0,-12,-1,11,1,-12,1,13,10,-12,
1,12,11,-12,-1,1,2,-12,-1,12,13,-12,12,13,14,-11,-1,1,4,-13,-12,12,16,-11,-12,
12,17,-13,1,-1,5,-12,12,11,6,-12,12,24};u(){for(i=11;++i<264;)if((k=q[i])-Q[i]
){Q[i]=k;if(i-++I||i%12<1)printf("\033[%d;%dH",(I=i)/12,i%12*2+28);printf(
"\033[%dm  "+(K-k?0:5),k);K=k;}Q[263]=c=getchar();}G(b){for(i=4;i--;)if(q[i?b+
n[i]:b])return 0;return 1;}g(b){for(i=4;i--;q[i?x+n[i]:x]=b);}main(C,V,a)char*
*V,*a;{h[3]=1000000/(l=C>1?atoi(V[1]):2);for(a=C>2?V[2]:"jkl pq";i;i--)*n++=i<
25||i%12<2?7:0;srand(getpid());system("stty cbreak -echo stop u");sigvec(14,v,
0);t();puts("\033[H\033[J");for(n=f+rand()%7*4;;g(7),u(),g(0)){if(c<0){if(G(x+
12))x+=12;else{g(7);++w;for(j=0;j<252;j=12*(j/12+1))for(;q[++j];)if(j%12==10){
for(;j%12;q[j--]=0);u();for(;--j;q[j+12]=q[j]);u();}n=f+rand()%7*4;G(x=17)||(c
=a[5]);}}if(c==*a)G(--x)||++x;if(c==a[1])n=f+4**(m=n),G(x)||(n=m);if(c==a[2])G
(++x)||--x;if(c==a[3])for(;G(x+12);++w)x+=12;if(c==a[4]||c==a[5]){s=sigblock(
8192);printf("\033[H\033[J\033[0m%d\n",w);if(c==a[5])break;for(j=264;j--;Q[j]=
0);while(getchar()-a[4]);puts("\033[H\033[J\033[7m");sigsetmask(s);}}d=popen(
"stty -cbreak echo stop \023;sort -mnr -o HI - HI;cat HI","w");fprintf(d,
"%4d from level %1d by %s\n",w,l,getlogin());pclose(d);}
Viite: http://homepages.cwi.nl/~tromp/tetris.html

4.3.7 Monimutkainen koodi Tetris: Perl koodi

Seuraavassa on Tetris-Perl tulkki: Perltris (versio 20050717) Sean Adams.
#!/usr/bin/perl

$_='A=15; B=30; select(stdin); $|=1; select(stdout);$|=1; system
"stty -echo -icanon eol \001"; for C(split(/\s/,"010.010.010.010
77.77 022.020.020 330.030.030 440.044.000 055.550.000 666.060.".
"000")){D=0;for E(split(/\./,C)){F=0;for G(split("",E)){C[P][F++
][D]=G} D++}J[P]=F; I[P++] =D}%L=split(/ /,"m _".chr(72)." c 2".
chr(74)." a _m");sub a{for K(split(/ /,shift)){(K,L)=split(/=/,K
);K=L{K};K=~s/_/L/; printf "%c[K",27}}sub u{a("a=40");for D(0..B
-1){for F(0..A-1){M=G[F][D];if(R[F][D]!=M) {R[F][D]=M;a("m"."=".
(5+D).";".(F*2+5)); a("a=".(40+M).";" .(30+M));print " "x2}}}a(
"m=0;0 a=37;40")}sub r{(N)=@_;while(N--) {Q=W;W=O=H;H=Q;for F( 0
..Q-1){for D(0..O-1) {Q[F][D]=K[F][D]}}for F(0..O-1){for D(0..Q-
1){K[F][D]= Q[Q-D-1][F]}}}}sub l{for F(0..W-1){for D(0..H-1){(K[
F][D]&& ((G[X+F][Y+D])|| (X+F<0)||(X+F>=A)|| (Y+D>=B)))&& return
0}}1}sub p{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[X+F][Y+D]
=K[F][D]) }}1}sub o{for F(0..W-1){for D(0..H-1){(K[F][D]>0)&&(G[
X+F][ Y+D]=0)}}}sub n{C=int(rand(P)) ;W=J[C];H=I[C];X=int(A/2)-1
;Y=0;for F(0..W-1){for D(0..H-1){K[F][D]= C[C][F][D]}}r(int(rand
(4)));l&&p}sub c{d:for(D=B;D>=0;D--){for F(0..A-1){G[F][D]||next
d}for(D2=D;D2>=0; D2--){for F(0..A-1){G[F][D2]= (D2>1)?G[F][D2-1
]:0; }}u;}}a ("m=0;0 a=0;37;40 c");print "\n\n".4x" "." "x(A-4).
"perltris\n".(" "x4)."--"xA."\n".((" "x3)."|"." "x(A*2)."|\n")xB
.(" "x4). "--"xA."\n";n;for(;;) {u;R=chr(1); (S,T)=select(R,U,V,
0.01);if(S) {Z=getc;}else {if($e++>20){Z=" ";$e=0;}else{next;} }
if(Z eq "k"){o;r(1);l||r(3);p}; if(Z eq "j"){o;X--;l||X++;p}; if
(Z eq "l"){o;X++;l||X--;p};if(Z eq " "){o;Y++;(E=l)||Y--;p;E|| c
|c|c|c|c|n||goto g;};if(Z eq "q"){last;}}g: a("a=0 m=".(B+8).";0
" ); system "stty sane"; '; s/([A-Z])/\$$1/g; s/\%\$/\%/g; eval;
Viite: http://www.seanadams.com/perltris

4.3.8 Mozilla SVG Tetris

Scalable Vector Graphics (SVG) on standardi kuvataan graafisia objekteja käyttäen XML.
tetris_svg_640x480.gif
Mozilla SVG Tetris: Tetris toteutetaan käyttäen Scalable Vector Graphics (SVG) kuvaus
http://www.croczilla.com/svg/samples/svgtetris/svgtetris.svg
Muita esimerkkejä SVG: http://www.croczilla.com/svg/samples

4.3.9 Google "widget" Tetris

Google, Yahoo!, ja Microsoft, ja muut yritykset ovat edistäneet miniature Internet-pohjaisen ohjelmiston nimeltä "widgets", jotka ovat yleensä ominaista joidenkin käyttö dynaaminen data available on the Internet.
Yksi tällainen widget saatavilla Google on Tetris peli.
Seuraavassa esimerkissä on cute, mutta muodoista pyörittää, ärsyttäviä tapoja:
tetris_google_widget.gif
Google "widget" Tetris
http://www.playbie.com/Game.aspx?gm=1&wt=2&su=live.com&sn=Google&gn=Google
Muut Google widgets:
http://www.google.com/ig/directory?synd=open

4.3.10 MIT tutkimuksen paperi: "Tetris is Hard, Even to Approximate" (2002)

Seuraavat tutkimus-asiakirja sisältää todiste siitä, että tietyn tyyppistä Tetris variantti on "NP-täydellisiä."
http://theory.csail.mit.edu/~edemaine/papers/Tetris_TR2002
Erik D.  Demaine, Susan Hohenberger, ja David Liben-Nowell, "Tetris is Hard, Even to Approximate", Technical Report MIT-LCS-TR-865, Massachusetts Institute of Technology, 2002.10.21.
Paikallisesti tallennettu kopio (PDF): tetris_theory_mit_lcs_tr_865_0210020.pdf
"NP täydennys" on luokittelu, kun kustannukset ja avaruus kustannukset algoritmi.
Muut luokitukset sisältävät "P" ja "NP".
A luokittelu "NP-täydellinen" merkitsee, että ongelmia on suurempi kuin joidenkin pienten kokoa, algoritmi on epätodennäköistä löytää haluamasi ratkaisun käytännön paljon aikaa tai tilaa.

4.3.11 Tutkimus-asiakirja: "Applying reinforcement learning to Tetris"

Seuraavat paperi, julkaistu 2005.5.30, Donald Carr at the Computer Science osasto Rhodes University, Etelä-Afrikka, esittelee soveltamisen "vahvistaminen oppimisen" Tetris.
ApplyingReinforcementLearningToTetris_DonaldCarr_RU_AC_ZA.pdf

4.3.12 Tetris Hame (2007.11)

tetris_skirt.jpg
Tetris Hame (2007.11)
The Tetris hame oli luotu "Lucy" ("hissyfitoly"-etsy.com) ennen 2007.11.
From the creator's kuvaus, hame (tarjotaan myytäväksi etsy.com):
"Okay, so I was a secret, closet Tetris fanatic from about, oh, 1993 to 1996. It was a bitter-sweet obsession. My life wasn't so great, but I could control the stacking of a few measly blocks, [damn it]! Or could I? Video games have been coming back to haunt my dreams as of late, and I find myself stacking blocks, jumping away from a frighteningly-large Q*Bert, and slipping off of logs next to a pixellated frog. This skirt is the result of those nightmares."
Forum huomautuksia tämän hame:
"Man, että hame sucks at Tetris"
"Ahahahaha, ajattelin, että sama asia."
"There's täydellisen linjan alas alareunassa ...  loppuun rivit katoa."  "TEHDÄ YLI" "."
"Ei pitäisi olla paikan päällä selkä-tai etuosassa jossa pitkä pala olisi sopii täydellisesti ..."
"Se on todella ruma hame though.  My boyfriend ei voinut ostaa minulle tarpeeksi suklaata ja kukkia saanut minua vakuuttuneeksi pukeutua, että asia."

4.3.13 Tetris vaiheessa toimimaan (2007.4)

tetris_stage_act.jpg
Tetris vaiheessa toimimaan (2007.4)
http://www.youtube.com/watch?v=sZrs8ZCO8xM
"From jotka tuonut teille Triforce vuonna 2006 ...  Comes seuraavan sukupolven inanimate esinettä skit ...  Tetris."
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
tetris_stage_act.flv

4.3.14 Hilpeä Tetris vaihtelut, japani-televisio-ohjelma

tetris_funny_variations_japanese_tv.jpg
Tetris muunnelmia japani-televisio-ohjelma
http://www.youtube.com/watch?v=SYRLTF71Sow
Tämä video segmentti on japani-televisio-ohjelma sisältää hilpeä vaihteluita Tetris, mukaan lukien:
kappaleina että katoamme purettaessa, palanen, joka täyttää koko rivi (siis täyttämällä rivi purettaessa), monta kappaletta, jotka kuuluvat samanaikaisesti, epäsäännöllisesti muotoinen kappaletta, pitkä pala, että on hieman liian laaja sovi aukko (estää 4-rivinen suoritusaika!), Mario iskeydy yksi sienten ja tulossa valtava ja kuolevat!, pieni pala roskia jäljellä, kun rivit ovat tuhoutuneet, ylöspäin painovoiman tehdä kappaletta float to the top jne.
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
tetris_funny_variations_japanese_tv.flv

4.3.15 "The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)

tetris_with_human_blocks_guillaume_reymond_2007nov.jpg
"The Original Human TETRIS Performance by Guillaume Reymond" (2007.11)
http://www.youtube.com/watch?v=G0LtUX_6IXY
From the kuvausta YouTube:
"TETRIS ollut todellinen ihmisen olentoja Istunto on auditorio:"
TETRIS on 4th video suorituskyvystä, GAME OVER Project ohjaama Sveitsin taiteilija Guillaume REYMOND (NOTsoNOISY luova elin).
Tämä stop-motion video ammuttiin ja pelataan "LES URBAINES" festivaali http://www.urbaines.ch klo Palais de Rumine (Lausanne, Sveitsi) November 24th 2007.
Voit löytää lisää tietoa ja myös SPACE INVADERS, PONG ja POLE POSITION sivullamme http://www.notsonoisy.com/gameover
Paikallisesti välimuistissa video Flash video (FLV) format (käytä VLC pelata):
tetris_with_human_blocks_guillaume_reymond_2007nov.flv

4.3.16 2,5-ulotteinen Tetris

Termi "2,5-ulotteinen" käytetään tässä tarkoitetaan ei-ortogonaaliset otetaan kaksi-ulotteinen versio Tetris, joitakin paksuus on kolmas ulottuvuus.
tetris_2andhalfd_andre_michelle.jpg
Andre Michelle's Tetris peli: Flash pelaaja http://lab.andre-michelle.com
(Löydät linkin "tetris3d" vuonna "F7: GAMES".)

4.4 3-ulotteinen Tetris

tetris_3d_gno3dtet_seb.jpg
Linux / GTK versio
Kolmiulotteinen Tetris-muodossa Java applet Internet-selaimet:
http://paperstack.com/brokout
Kolmiulotteinen Tetris-Windows käyttöjärjestelmä:
http://www.sfu.ca/~vwchu/3dtetris.html

4.5 4-ulotteinen Tetris

4d_tetris.jpg
Greg Kaiser's "HyperTetris" (1996): 4-ulotteinen Tetris
Vuonna [1996], [...], Greg Kaiser koottu neljän-ulotteinen muunnos, klassinen peli.
Using IrisGL (a.k.a.  igl) hän loi toimi, jos vaikea pelata, peli käyttämällä neljää osa-ruuduissa kuvata eri kolmiulotteinen näkökohtia koko peli-tilaa.
[Koska] ei ole helposti [ymmärrettäviä] tapa tehdä neljän D esineitä kahden-D-näytön, neljä osa-näkemykset ovat käytännöllinen tapa käsitellä ja visualisoida kiertoajan ja kääntäminen palaset kautta neljä ulottuvuutta ( - pelin nimeltä x,y,z,w).
Pikemminkin kuin täytätte riviä korttelin kuin alkuperäisessä, tavoite tässä tapauksessa on täyttää täydellisen kuution, x,y,z subview (yleensä 4, 4 4).
Muut subviews jotka sisältävät "w" ulottuvuus on sijoitettu oletusarvoisesti 4, 4, 10 lohko kanssa järjestelystä "w" on pitkä, "vertical" ulottuvuus kaikissa kolmessa tapauksessa, joilla on erilaiset perustat, (x,y), (x,z), (y,z).
Gravity-säädökset, jotka on "-w" suuntaan, joten nappulat "kaatua," kolme pitkää subviews, jotka sisältävät "w", ja eivät liiku ellei se pelaaja valvonta on viimeksi (x,y,z) subview.
Se kestää hetken tottua, eli vähiten.
Jos jotkut ihme kärsivällisyyttä tai muuttuvat parametrit peli, yksi ei täydellinen kuutiossa, se katoaa, koska valmista riviä tehdä alkuperäisen Tetris, vaikka ei pistemäärä on säilytettävä HyperTetris.
Benjamin Bernard (2000)
http://archive.ncsa.uiuc.edu/Classes/MATH198/bernard/oldIndex.html

4.6 N-ulotteinen Tetris

polytope_tetris_screenshot3.jpg
Polytope Tetris (2003): N-ulotteinen Tetris peli variantti
http://polytopetetris.sourceforge.net
Polytope Tetris on n-dimensionally Tetris.
Inspiraationa ovat HyperTetris ohjelma, Polytope Tetris voit tonnia pelata Tetris missään LUKUMÄÄRÄ ulottuvuus.
Play Tetris, 3D, 4D, 5D, tai enemmän.
HyperTetris on paljon catchier nimi kuin Polytope (def) Tetris, mutta en voi varastaa nimi.
http://polytopetetris.sourceforge.net

5. "Standard Tetris" eritelmä

5.1 Johdanto

Määritelmä "Standard Tetris" on idealized mallin tärkeimmistä ominaisuuksista ja käyttäytymisestä on ensimmäinen IBM-PC täytäntöönpanoa, Tetris peli (circa 1986-1988).
The idealized malli perustuu päätellä ilmeisen aikomuksia ja kehittäjät ensimmäisen IBM-PC täytäntöönpanoa, Tetris peli.
Esimerkiksi, se tuntuu järkevältä päätellä, että kehittäjät ensimmäisen IBM-PC täytäntöönpanoa, Tetris pelin tarkoitus valita muoto jokaisen uuden kuuluvien pala "satunnaisesti," ja että käyttöä koskevien Borland C täytäntöönpanoa, rand() tehtävänä oli pelkästään käytännön lähentämisestä tarkoitus.
Määritelmä "Standard Tetris" täsmennetään, että muoto jokaisen uuden kuuluvien nappula on valittu "sattumanvaraisesti."
Tämä ihanne käyttäytymistä ei voida saavuttaa millään täytäntöönpanon, mutta toteutuksissa voi lähentää ihanteellinen käyttäytymistä.
Vaikka ei täytäntöönpano voi täysin toteuttaa määritelmän "Standard Tetris," ihanteita "Standard Tetris" mukaan objektiivisten ominaisuuksien perusteella, ja toteutukset voidaan verrata mukaan niiden suhteellinen läheisyys ihanteita "Standard Tetris."
Tässä jaksossa kuvataan joukko tekijöitä, käyttäytymisestä ja säännöt, jotka yhdessä määrittelevät "Standard Tetris."

5.2 Standard Tetris aluksella

Hallitus on ruudukon soluista, joilla on 10 saraketta ja 20 riviä, yhteensä 10 * 20 = 200 soluja.
tetris_diagram_board_10x20_empty_new.jpg
Standard Tetris aluksella (10 saraketta, 20 riviä)
Jokainen solu voi olla joko tyhjyys (tyhjä) tai miehitettyjä (kokonaisuudessaan).

5.3 Standard Tetris kappaletta

On seitsemän (7) standardi Tetris kappaletta, seuraavalla kirjeellä nimet:
{ O, I, S, Z, L, J, T }
Kirjeessä nimet innoittajana on myötäisesti palaset.
tetris_diagram_pieces_orientations_new.jpg
Seitsemän Standard Tetris kappaletta ja niiden "linjausta"
The pisteen (0,0) yhtyy hallituksen kantaan (6,20) kun pala ensimmäisen kerran.
Ensimmäisessä sarakkeessa osoittaa alkuperäisen "linjausta."
Sen jälkeen, sana "suuntautumiseen" käytetään kuvaamaan mitä tahansa tilasta palanen, joka on asetettu sallitut todetaan, että tämä voi johtua vastapäivään kierto tapahtuma.
Changing "suuntautumisen," tiettyyn "suuntautumiseen," joka "I, S" tai "Z" pala edellyttää, että yhdistelmä vuorottelua ja käännös.
Näin ollen sana "suunta" on käytetty tässä tarkoitetaan muutakin kuin kierto yksin.
Kuitenkin "suuntautumista" voi muuttaa vain vastauksena on vastapäivään kierto tapahtuma, ja sykli erilliset "suuntaviivat" jokainen pala lähentää tai otteluihin, kierteen johtuvat puhdasta kierrosta.
Erityinen sanan käytön "suuntautumiseen" tässä yhteydessä on lähes vastaava kuin tarkoitettu sana "kiertoa" tai "kulma," mutta sana "suuntautumisen" sijaan käytetään "kierto" yrittää saada huomiota siihen, että jotkut palaset vaativat enemmän kuin kierto tuottaa asetettu sallitut todetaan johtuvat vastapäivään "kierto" tapahtumia.
Palat voi siirtää vain suuntaviivat (tai suoritetaan erityisten horisontaalisten tai vertikaalisten käännös) jos tuloksena state of the pala ei olisi miehitetty (kokonaisuudessaan) solujen ulkopuolella alueen hallituksessa, ja se ei ole miehitetty soluja, jotka ovat päällekkäisiä missään tällä hetkellä täytetty solujen : n hallituksen.
(Tässä sääntönä on, että miehitetyillä (kokonaisuudessaan) solujen urakkapalkalla ei pidetä osa "nykyisin miehitetyillä solujen hallituksen"
Sen jälkeen kommentteja, mitään viittausta, jonka vastapäivään kierto tapahtuma on tehty olettaen, että tällainen kierto voidaan todella suorittaa, ottaen huomioon vallitsevat urakkapalkalla ja aluksella.
The "O" (laatikko) pala on vain yhden suuntautumiseen, ja ei muuta paikkaa jonkin sen miehitetty (kokonaisuudessaan) solujen vastausta mihinkään vastapäivään kierto tapahtuma.
The "I" (rivi) Teos on kaksi mahdollista linjausta, aluksi näkymisen horisontaalinen suuntautumiseen.
The "I" pala varajäsenet kahden linjausta vastauksena peräkkäisten vastapäivään kierto tapahtumia.
The "S" ja "Z" kappaletta kummallakin on kaksi mahdollista linjausta.
Nämä palaset kunkin varajäsenen kahden linjausta vastauksena peräkkäisten vastapäivään kierto tapahtumia.
The "L", "J", ja "T" kappaletta kukin on neljä mahdollista linjausta, ja nämä suuntaviivat ovat tulokset yksinkertainen kierrosten noin center pisteitä muodoista.
Kun teoksen ensimmäisen kerran, johtokunnan, Teos on sen "tärkeimpien akselin" horisontaalinen suuntautumiseen, ja pala on yläreunassa linjan.
Näin ollen ei ole kappaleet ovat alun perin, joilla niiden suuntaviivat muuttuneet.  Teos on laskeutumaan yhdellä rivillä on mahdollisuus ottaa sen suuntautumiseen muuttunut.
Kun kappale on pudonnut yksi rivi pöydällä, kaikki pala suuntaviivat voidaan saavuttaa (olettaen, että pala ei ole liian lähellä sivuseinät tai nykyisen kasa kappaletta).

5.4 Standard Tetris flowchart

Seuraavassa on lähentää flowchart: Standard Tetris peli.
standard_tetris_flowchart_for_timer_event_001.gif
Approximate flowchart: Standard Tetris peli
standard_tetris_flowchart_for_input_events_001.gif
Approximate flowchart: Standard Tetris peli

5.5 Standard Tetris pala luominen

Seuraava kaavio osoittaa (4 cell * 2 cell) alueen hallituksessa, jossa kaikki palaset ovat näkyvissä, kun luotiin.
tetris_diagram_board_10x20_spawn_area.jpg
Alueella, jossa palaset näkyviin, kun luotiin Standard Tetris
Kun uusi pala ensimmäisen kerran pöydällä, sen alkuperä on sama kuin piste tässä kaavio, ja pala on täysin hallittavissa tummennetut alueella tämän kaavion mukaisesti.
Kun uusi peli on alkanut, täydellinen vapaapudotusta viive kuluu, ja ensimmäinen vapaapudotusta iteration pala on saanut yläreunassa linjan.
Aikana Normaali peli pelata, kun tietty vapaapudotusta iteration "lands" pala, täydellinen vapaapudotusta viive kuluu ja ensi vapaapudotusta iteration pala on saanut yläreunassa linjan.
Kun kappale on saanut, tyyppi nappula on valittu käyttäen seuraavaa algoritmia:
pieceIndex = 1 + (randomInteger % 7);  // 1..7
Koska on olemassa jatkuva p (= 1/7) mahdollisuus valitsemalla lajin pala, ja kaikki kappaleet, samantyyppisiä ovat erottamattomat, todennäköisyys ottaa täsmälleen k paloja tietyntyyppiset jälkeen n kokeita seuraa Binomijakauma:
P(k) = (1-p)^(n-k)  *  p^k  *  ( n! / ( (n-k)! k! ) );

  p  =  0.0   ...   1.0;
  k  =  0, 1, 2, ..., n;

mean                = ( n * p )
variance            = ( n * p *(1-p) )
standard deviation  = sqrt( variance )
Kun me valita keskuudestaan 7 (seitsemän) kappaletta sattumanvaraisesti, todennäköisyys saada tietty pala on p=(1/7).
Jos teemme tämän n=70 kertaa, esimerkiksi todennäköisyys saada täsmälleen k kappaletta (k vuonna valikoiman 0, n) on antanut Binomijakauma, kuten käy ilmi seuraavasta kuvasta.
binomial_distribution_n70_p7th.jpg
Binomijakauma for n=70, p=(1/7)
Näin ollen kukaan voi ennustaa keskimäärin yhteensä kappaletta, yksi tyypin annettiin yhteensä määrä pistokokeita kappaletta, ja yksi voi myös laskea odotettu varianssi ja standardipoikkeama (neliöjuuri varianssi):
p = (1/7):

total random                      standard
pieces (n)     mean    variance   deviation
============  =======  ========   =========
      70          10         8         3
     700         100        85         9
    7000        1000       857        29
   70000       10000      8571        93
Kun me muuntaa satunnainen arvo palan indeksi, voimme tulkita sen seuraavasti:
value  piece
=====  =====
  1     "O"
  2     "I"
  3     "S"
  4     "Z"
  5     "L"
  6     "J"
  7     "T"
[Pre-kaupalliseen MS-DOS versio Tetris käytti satunnaisesti useita toimia tarjouksen tekijän Borland Pascal kääntäjään.
Tätä toimintoa käytetään 32-bittisiä valtion muuttuja.
Näin ollen jono satunnaisia numeroita oli vain 2^32 erillisiä arvoja.
Näin ollen periaate, pelaaja voi löytää, kun pudottamalla ehkä 10 kappaletta, tarkka paikka joukoksi 2^32 numerot vastaavat nykyiset state of the game.
Jos Tetris simulaatioilla on teloitettu kanssa kiinteän järjestyksessä 2^32 kappaletta, niin optimaaliset päätökset löytyvät jokaisen paikan järjestysnumero.
(Ei näytä olevan riittäviä mahdollisuuksia on aluksella on täysin tyhjä aluksella valtion, jonka avulla voimme saada synkronoitu kanssa precomputed optimaalisen ratkaisun tielle.)
Riski käyttää yksinkertaista satunnaisesti numeron generaattoria, joka simulaation tarkoitus löytää optimaalinen ratkaisu ongelmaan on se, että ratkaisu on optimaalinen vain tiettyä polkua kautta ongelman avaruuteen valitaan yksinkertaisella satunnaisesti numeron generaattoria.  ]

5.6 Standard Tetris valvonta

Aikana peli pelata, seuraavat tuotantopanokset ovat saatavilla:
left   : request to translate left  by one column
right  : request to translate right by one column
rotate : request to do a counterclockwise rotation
drop   : request to instantly drop the piece
Kaikki tuotantopanokset tulevat voimaan nouseva reunojen on annettu myönteinen panos (nappia painamalla, vastakohtana painiketta release).
Kun nappia painamalla tapahtuu, tämä lasketaan pyynnöstä.
Holding A-painiketta alas ylittää tietyn aikaa saattaa johtaa siihen, että "auto-toistan" piirre näppäimistö, joka tuottaa uusia painikkeen painamisella - mutta tämä ominaisuus on ulkopuolisen pelin moottori.
Tulot edellä mainittujen vaatimusten alkuperäinen Tetris peli.
Käännä pyynnöt voidaan teloittaa, jos ei ole päällekkäisyyttä välillä toivomisen suuntautumiseen ja asettaa solujen nykyisen hallituksen (lukuun ottamatta laskussa kappale), ja jos toivottu suuntautuminen ei ole asetettu solujen ulkopuolella aluksella alueella.
Käännä pyynnöt voidaan teloittaa, jos ei ole päällekkäisyyttä välillä toivomisen käännetty kokoonpano ja asettaa solujen nykyisen hallituksen (lukuun ottamatta laskussa kappale), ja jos haluttu käännetty kokoonpano ei ole asetettu solujen ulkopuolella aluksella alueella.
Input pyynnöt käsitellään kanssa latenssi, että riippuu ruutunopeuksilla-peli (esimerkki: 75 Hz), ja pyyntöjä tulee voimaan (jos voimassa) hetkessä.
Pätkä voidaan laski ilman mitään linjaa, jotka kuuluvat vaiheet tapahtuvat.
Pätkä voidaan kääntää useita kertoja vasemmalle tai oikealle, ja sitten laski, kaikki ilman kokeminen virallinen linja kuuluvien askel.
Koska äskettäin saanut pala ei voi olla käännettävä (koska se on juuttunut vastaan ylälaidan hallituksessa), pelaajan on hyväksyttävä vähintään yksi pala kuuluvien askel, jos vuoroviljely ovat toivottu tai vaadittu.
Vaikutus pistemäärä on vähäinen.

5.7 Standard Tetris pala "laskeutumiseen"

Jos pala on yksinkertaisesti laskee, se laskee yhden rivin aikana jokainen pala kuuluvien iteration.
Siellä tulee olemaan iteration, joka liikkuu se paikka, jolla ei ole yhteyttä horisontaalisia pintojen paikka, joka on yhteydessä horisontaalisen pinnat.  Kun tämä toistojen tapahtuu, palaset ovat levätessä yhteyttä.
Jos iteration alkaa pala, levätessä kosketuksessa vaakatasoon, pala "lands," ja siitä tulee osa staattisen kasaan.

5.8 Standard Tetris "riviä valmistunut"

A valmistunut rivi on rivi pinossa jossa kaikki solut on miehitetty.  Kun loppuun rivi on pudotettu kasaan, ja rivit yläpuolella poistettava rivi on siirtynyt alaspäin yksi rivi poistaa kuilu, tämä lasketaan "täytetty."
Kun pala lands se tulee osa pinossa.
Välittömästi sen jälkeen, kun pala lands, pinossa on tarkastettu loppuun rivit, ja kaikki loppuun rivit on poistettu.
Jopa neljä riviä voidaan saattaa päätökseen samanaikaisesti.
Seuraavassa taulukossa esitetään ylärajaa riveillä valmistunut samanaikaisesti yhden palan:
piece   max. simultaneous
         rows completed
=====   ==================
 "O"           2
 "I"           4
 "S"           2
 "Z"           2
 "L"           3
 "J"           3
 "T"           2

5.9 Standard Tetris "tasot"

Standard Tetris on 10 vaikeuksissa tasoilla, numeroitu 1 (yksi) kautta 10 (TEN), joiden taso 1 on "vähintäänkin vaikeaa."
Tason indeksi on enintään kaksi-arvot:
actualLevel = max( initialLevel, earnedLevel );
The initialLevel arvo on tasolla, että pelaaja valitsee kun aloitetaan uusi peli.
Tämän rakenteen tasolla kuin funktiona loppuun rivit on helposti havaittavissa pre-kaupalliseen MS-DOS versio Tetris:
{ 0,  1,  2, ..., 10 }  --> earned level  1
{    11, 12, ..., 20 }  --> earned level  2
{    21, 22, ..., 30 }  --> earned level  3
{    31, 32, ..., 40 }  --> earned level  4
{    41, 42, ..., 50 }  --> earned level  5
{    51, 52, ..., 60 }  --> earned level  6
{    61, 62, ..., 70 }  --> earned level  7
{    71, 72, ..., 80 }  --> earned level  8
{    81, 82, ..., 90 }  --> earned level  9
{    91, ...         }  --> earned level 10
Näin ollen earnedLevel arvo on laskettu mukaan seuraavat algoritmi:
if (linesCompleted <= 0)
{
  earnedLevel = 1;
}
else if ((linesCompleted >= 1) && (linesCompleted <= 90))
{
  earnedLevel = 1 + ((linesCompleted - 1) / 10);
}
else if (linesCompleted >= 91)
{
  earnedLevel = 10;
}

5.10 Standard Tetris kuuluvien iteration viive

Standard Tetris on reaaliaikainen välillä perättäisten line vapaapudotusta toistojen, että on tehtävä nykyistä vaikeus tasolla.
Seuraavat suhdetta tasolla hakemisto ja jotka kuuluvat iteration viivytystä perustuu toistuvista sekuntikello mittaukset kaikilla tasoilla pre-kaupalliseen MS-DOS versio Tetris.
actualLevel      iterationDelay [seconds]
                (rounded to nearest 0.05)
============    =========================
     1                 0.50
     2                 0.45
     3                 0.40
     4                 0.35
     5                 0.30
     6                 0.25
     7                 0.20
     8                 0.15
     9                 0.10
    10                 0.05
Näin ollen meidän perustaa seuraavan kaavan varten iteration viivytystä arvo on tehtävä todellinen taso hakemisto:
iterationDelay = ((11 - actualLevel) * 0.05);  // [seconds]
Jos aluksella on tyhjä, eikä ole mitään käyttäjä syöttää, saanut pala on todellista tasoa 1 laskeutui noin 10 sekuntia, ja saanut pala on todellista tasoa 10 laskeutui noin 1 sekunnissa.

5.11 Standard Tetris "pisteet"

Standard Tetris vain palkintoja pisteiden teko purkamis-pala.
Ei ole pistettä, jotka myönnettiin sen säädöksen loppuun yhdellä rivillä, tai täyttämällä kaksi, kolme tai neljä riviä samanaikaisesti.
[Huomautus: Jotkin variantteja Tetris palkinnon pisteiden teko loppuun rivit, joilla on räjähdysmäisesti kasvava bonus yhä useammat samanaikaisesti valmistunut rivejä.
Näin ollen strategia maksimoi pisteet tällaisissa variantteja Tetris Siinä perustetaan mahdollisuuksia "saada Tetris," slangia käytöstä "I" muoto saada neljä samanaikaista linjojen ja saamme paljon pisteitä.  ]
Jos sinulla on tyhjä aluksella, ja annat ei-"I" pala tehdä vapaapudotusta ja maa, tai heti pudottaa ei-"I" pala, voit perustaa seuraavat kohta chart käyttämällä ennalta-kaupalliseen MS-DOS versio Tetris:
actualLevel   free-fall   instant-drop
                points       points
===========   =========   ============
     1             6           24
     2             9           27
     3            12           30
     4            15           33
     5            18           36
     6            21           39
     7            24           42
     8            27           45
     9            30           48
    10            33           51
Unrotated, ei-"I" palaset kuuluvat yhteensä 18 riviä.
Tämä selittää, että kohta ero vapaapudotusta ja instant-pudota tapauksissa.
By kokeilemassa välitavoitteet tapauksissa se on helppo päätellä, että seuraava kohta kaavalla:
pointAward = ( (21 + (3 * actualLevel)) - freeFallIterations );
Huomaa, että tämä kaava ei ole mitään tekemistä sen kanssa, etäisyys palan kuuluu!
Se on ehdottomasti tehtävä todellinen taso, ja seuraamuksen määrää toistojen pala on voitava pudota vapaasti.
Tämä rankaisee käyttäjä varten tarvitsee aikaa ajatella.
Huomaa myös, että koska kappale ei voi aluksi olla käännettävä, kun se ensin spawns, pelaaja on rangaistu ainakin yhden vapaapudotusta iteration jos vuoroviljely ovat velvollisia paikka pala, pinossa.
Tämä luultavasti koskaan vaikuttaa ihmisten pelaajia, elleivät he jotenkin: tunnista pala, paina käännös avaimet "(vasemmalla" tai "oikealla)," paina "käännä" avain yhden tai useamman kerran, ja paina "pudottaa" avaimen, kaikki alle 0.5 sekuntia tasolla 1, tai alle 0.05 sekuntia tasolla 10.

6. Standard Tetris strategia

6.1 Johdanto

Strategia Pelin pelaaminen riippuu pelin sääntöjä.
Strategia riippuu jonka parametri on optimoitu.
Vuonna Standard Tetris, yksi selviää suorittamalla rivit, saa pisteitä laskeutumiseen kappaletta, ja tulokset on eniten pisteitä mahdollista, että jokainen pala suorittamalla pisara ennen kuin yksi tai useampi vapaapudotusta toistojen transpire.
An A.I. voi optimoida pistettä, jotka myönnettiin kunkin palan yksinkertaisesti päättämällä, nopeasti ja "painamalla näppäimiä" panna liikkeelle.
Lisää tärkeää on A.I. on hengissä, koska toistaiseksi hengissä tarkoitetaan mielivaltaisesti korkeat pisteet voidaan saavuttaa.  Koska Tetris kappaletta syksy on erityinen korkokanta, A.I. on tehtävä päätöksiä ainakin tällä nopeasti - ja A.I. on tehtävä liikkuu, että täydellinen rivit on korko, keskiarvo vähintään 1 rivi kohti 2,5 kappaletta.  (Jokainen pala on 4 solua, ja jokaisella rivillä on 10 solua.)
Tietenkään kukaan voi lykätä täyttämällä rivit, joita kartutetaan paloiksi ja rakentaa suuri kasa, mutta siellä on vain 200 solua, koko aluksella, joka periaatteessa voi vain pitää 50 kappaletta, joten pelaaja (kuten A.I.) on saattamassa linjoilla kuin ehdottomasti etusijalle.
Vuonna Standard Tetris, peli valtion sisältyy nykyisen hallituksen miehitys ja nykyisen kuuluvien pala (tyyppi, sijainti, ja suunta).  Peli valtio voi valinnaisesti sisältyä "Seuraava Piece".

6.2 Vaihdettaisiin sekvenssi "S" ja "Z" nappulat

Heidi Burgiel, Ph.D., että Department of Mathematics, Statistics and Computer Science on University of Illinois at Chicago, on osoittautunut, että vaihdettaisiin sekvenssi "S" ja "Z" palaset ovat voimassa standardin (10-sarake, 20-rivinen) Tetris pelin lopussa, ennustettavissa numero ja liikkuu.
http://www.math.uic.edu/~burgiel/Tetris/explanation.html
Lainaus artikkelista: "You can't win a game in which only alternating 'S' and 'Z' pieces appear."
Osallistuja painettu artikkeli: Mathematical Gazette, heinäkuu 1997, "How to Lose at Tetris"
Heidi Burgiel tarjoaa Java applet, joka on Internet-selain, joka sisältää muuttaa Tetris-klooni, että spawns vaihtuen "S" ja "Z" kappaleita.
http://www.math.uic.edu/~burgiel/Tetris
[ "Standard Tetris" ohjelmistot liittyvät asiakirja olet käsittelyssä on myös tilassa, joka spawns vaihtuen "S" ja "Z" kappaleita.  ]
Heidi Burgiel väitti, että peliä, joissa vuorottelevat "S" ja "Z" kappaletta (standardi Tetris aluksella 10 saraketta ja 20 riviä) on lopetettava ennen vähemmän kuin 70000 kappaletta ovat laskeneet.
The Standard Tetris ohjelmiston mukana tämän asiakirjan avulla henkilö peleissä kanssa vuorottelevat "S" ja "Z" kappaletta, ja muuttaa hallituksen leveys.
On helppo nähdä, että boards, joiden leveys on kokonaisluku kerrannaisia neljä saraketta (esimerkkejä: 4-sarakkeet, 8 sarakkeet, 12 saraketta, jne.) voi olla pelattu ikuisesti, kun palaset varajäsenen välillä "S" ja "Z", jossa kasa kasvaa no suurempi kuin 4 riviä.  Mainitsen tässä tehdä selväksi, että rajalliset selviytymiskykyä kuvattu tutkimus-asiakirjan edellä mainittu on nimenomaan kyseessä on standardi Tetris aluksella (10 saraketta ja 20 riviä).

6.3 Unsolvable pala sekvenssien yleensä

On olemassa koko luokkaa patologinen sekvenssejä, joita ei voida säilyneet.
Olisi kiinnostavaa laskea yhteensä todennäköisyys kohdataan peli-päättämisestä sekvenssi, koska se olisi tehnyt Ylemmät suorituskykyä koskevia mitään strategiaa, jopa täydellistä tietoa tulevaisuudessa kaikki palaset missään tietyssä kohdassa peliä.

6.4 Yhteensä mahdollista aluksella kokoonpanoissa

Ottaen huomioon, että aluksella on 10 * 20 = 200 soluja, ja ottaen huomioon, että jokainen solu voi olla vain yksi kahden valtion (tyhjä tai occupied), kokonaismäärästä aluksella kokoonpanoissa on oltava pienempi tai yhtä suuri kuin: (2 ^ 200).
Ottaen huomioon, että jokainen pala lisätään 4 solujen hallituksen, ja kunkin rivin loppuun poistetaan 10 soluja linjan, määrä miehitetyillä solujen hallituksessa tulee aina olla jopa.  Esimerkiksi (3*4 - 1*10) = 2, (1*4 - 0*10) = 4, (4*4 - 1*10) = 6, (2*4 - 0*10) = 8, (5*4 - 1*10) = 10 jne.  Näin ollen ainoastaan puolet siitä (2 ^ 200) aluksella kokoonpanoissa pääsee pelaa peliä.
Näin ollen kokonaismäärästä aluksella kokoonpanoissa on noin: (2 ^ 199) = 8.03469...  * 10^59.
Kuitenkin meidän pitäisi jättää meidän yhteensä mitään kokoonpano, joka sisältää täytetyt rivejä, koska täytetty rivit poistetaan ennen kunkin valmistunut liikkua.  Kaikki määritykset yhden tai useamman täytetty rivit romahduksen toiseen kokoonpano, joka ei sisällä mitään täytettävää riviä.
Lisäksi meidän pitäisi sulkea pois mitään kokoonpano, joka sisältää ei-tyhjä rivi edellä yksi tai useampia tyhjiä rivejä, koska ei-tyhjä rivi edellä tyhjä rivi tulee aina syksy, ja kaikki, jotka kuuluvat pysäkit ennen kunkin liikkua.
Kullakin rivillä voi olla 2^10 = 1024 valtiota, joista yksi on "tyhjä", joista yksi on "täydellinen", ja (1024 - 2) = 1022 jotka ovat osittain miehitetty.  Emme sulje pois "täyttä" tapauksesta.
Jos alariville on tyhjä, niin kaikki rivit yläpuolella alariville on myös oltava tyhjä.
Jos alariville on osittain miehitetty, sitten toinen rivi voi olla tyhjä tai osittain miehitetty.
Jatkaa tätä analyysiä, voimme laskea useita aluksella kokoonpanoissa, että otetaan sisään huomioon syrjäytymisen täyden rivit ja rajoituksia tyhjiä rivejä: 1 + (1022 * (1 + 1022 * (1 + 1022 * (1 + 1022 * (...  * (1023)))))), joka on noin ((1022 ^ 19) * (1023)).
Näin ollen meidän löytää täsmällisempi arvio kokonaismäärästä vakaan hallituksen kokoonpanot: (1/2) * ((1022 ^ 19) * (1023)) = 0.9625...  * (2 ^ 199), eli noin 3,74% vähemmän kuin (2 ^ 199) arvio.
Kuitenkin todellinen määrä on vakaa, helposti saatavilla aluksella todetaan, on todennäköisesti huomattavasti pienempi johtuu siitä, että huippu-useimmat rivit voi vain täyttää muutaman tavoin.  Koska huippu-useimmat rivit täyttää, äskettäin luotu pala ei voida siirtää tai pyöritetään hyvin paljon.  Tämä rajoitetaan monin tavoin, että huippu-useimmat rivit voidaan täyttää.

6.5 Periaatteessa paras liikkua löytyy kaikista aluksella ja pala konfigurointi

Koska voimme saada kaikki seitsemän mahdollista kappaletta minkä tahansa aluksella valtion, kokonaismäärä peli valtioissa on noin 7 * (2 ^ 199) = 5.624...  * 10^60.
Koska emme voi periaatteessa tehdä syvä etsimään kaikkia mahdollisia tulevaisuuden kaikkea mahdollista siirtoa varten tietyn pelin tilaa, voimme olla vain yksi "paras" liikkua liittyvät jokaista peliä.
Lähdemme siitä, että meillä ei ole pääsyä muita tietoja kuin nykyisen hallituksen ja nykyisen pala, niin "paras" tarkoittaa "Muuttuva, joka tarjoaa suurimmat mahdollisuudet tyydyttää meidän pitkän aikavälin tavoitteen, selviytyminen".
Siirtyminen on vain käännös (enintään 10 vaihtoehdot) ja kierto (enintään 4 optiota), voimme helposti koodata paras liikkua yhden tavun.
Eli periaatteessa voisimme muodostaa taulukon kanssa 10^61 merkinnät (bytes) kertoi meille paras liikkua antanut mitään aluksella valtion ja nykyisen pala.
Tietenkin tämä on epäkäytännöllistä, kuten luetellaan kaikki "Go" boards tai "Chess" boards on epäkäytännöllinen.  Mutta kohta on se, että on olemassa yksi oikea ratkaisu, ja siellä on paras liikkua kaikkiin kokoonpano.  Ei voi olla yhtä hyvä siirtoa varten tietyn kokoonpanon, mutta emme voi mielivaltaisesti valita yhden liikkua tässä asiassa.
Monet peli-playing algoritmit ovat taulukot, että tyhjentävästi lueteltava kaikki pelin valtion mahdollisuuksia rajoitetusti yhteyksissä, kuten "avaaminen (alkuperäinen) liikkuu" tai "end-peli (lopullinen) liikkuu" Shakki.  Ehkä tyhjentävä luettelo Tetris kasaan pinnat (noin (20 ^ 10) states) on mahdollista.  Se on kiinnostava ajatus.
Tyhjentävä luettelo kaikille valtioille alareunassa kahdessa rivissä, kerrotaan seitsemän mahdollista kappaletta, ja varastointia paras liikkua yhden tavun, olisi melko helppoa, vaaditaan vain 7 MB muistia.  Ehkä optimoimalla suorituskyky näiden seitsemän miljoonaa tapauksissa tarjoavat raaka-tiedot sekä analysointia ja kehittämistä yksinkertaisia malleja tiedot; tällaisia malleja voidaan pitää osana yleistä ihanteellinen Tetris-pelaaminen strategia.
Huomaa, että täytäntöönpanovaltion paras liikkuu vielä ei suojaa meitä vastaan mahdollista patologinen riista-päättämisestä pala sekvenssejä.  Se on vain, että meidän tulee aina suorittaa siirtoa, joka tarjoaa meille suurin mahdollinen tulevaisuuden selviytymisen kun otetaan huomioon, että tulevaisuudessa kaikki palaset ovat täysin sattumanvaraisesti (ja tuntematon, kun meillä on päättää, miten haluat siirtää yhden nykyisen tunnettu kappale).

6.6 Real-time suorituskykyä

Yksi rajoitus edessään joitakin strategia algoritmeja on tarve reaaliaikainen suorituskyky - mikä tarkoittaa, että algoritmi on tehtävä päätöksensä tietyn määrän aikaa.
Kun ihmisten soittaa Tetris, palaset eivät lopeta kuuluvien antaa pelaajalle mahdollisuuden ajatella.  Se on osa haastetta ja Tetris.  Niinpä, A.I. järjestelmä, joka on tarkoitus simuloida rooli ihmisen pelaajan on myös tehtävä päätöksiä suuruus johtuu Tetris peli.

6.7 Row ja pala Summissa

Huomaa, että pitkällä aikavälillä määrä laski palaset on hyvin lähellä 2.5 kertainen määrä loppuun rivit - koska jokaisella rivillä on 10 solua, ja jokainen pala on 4 solua, ja meidän on täytettävä rivi, keskimäärin kerran (10/4) = 2.5 kappaleina laski.
Näin voimme käyttää "loppuun rivit" ja "pudonnut kappaletta" lähes vaihtoehtoisesti yhdessä asianmukaisten suhteellisuuden vakiona.  Suurin virhe on, kun aluksella on kokonaan täytettyjä, lukuun ottamatta yhden aukon kullakin rivillä (((10*20)-20)/4) = 45 kappaletta on pudonnut, mutta puute on ennustettu (45/2.5) = 18 loppuun rivit.

6.8 Current-osainen (ja hallituksen) strategia

Jos me vain antaa A.I. saada tietoa nykyisen hallituksen ja nykyisen pala, ja me vain seurausta siirtämällä nykyisen pala erityisesti keinoja, tämä voi olla nimeltään "yhden-osainen" analyysi.
Seuraavassa on karkea luonnos, miten yhden-osainen analyysi voi päättää edetä Tetris:
tetris_piece_drop_with_metrics01.jpg
Current-osainen analyysia varten Tetris peli valtion
Pohjimmiltaan meidän kokeilla kaikkea mahdollista muuttaa ja valita liikkua, että sadot paras tulos.
Vaikea osa on taksoitus kunkin tuloksen.
Meidän on määrä hypoteettinen peli valtion mukaan, miten hyvin tällainen valtio tukee lyhyen ja pitkän aikavälin tavoitteita.
Meidän pitkän aikavälin tavoitteena on elinehto.  Survival riippuu estää kasa osoitteesta täynnä linjan.  Voimme vähentää kasa korkeus, jonka muodostavat täydellisen rivit, jotka ovat sitten pois kasasta.
Muodostaa täydellisen rivissä, meidän on sovittava osissa kappaletta jokaiseen sarakkeeseen, että rivillä.  Näin ollen meidän vaatia, että kaikki osat peräkkäin on alttiina putoavat kappaleina, jos aiomme lopulta täyttää koko rivi.
Jos jostain syystä emme kattaa enintään tyhjä osia peräkkäin, jonka palaset kaikista korkea-rivi, sitten me olemme nyt pysty täyttämään näitä tyhjiä osia rivi.  Ainoa tapa (olettaen, ei liukuisi) päästä niihin "haudattu reikiä" on poistaa rivejä edellä, jotka ovat osat toimivat esteet.
Seuraavat seikat ovat niitä, me voimme käyttää koron tietyllä aluksella tilasta:
Overall pile height
Mitä korkeampi kasa, sen pahempi, että tilanne näyttää olla, koska olemme lähempänä täynnä linjan.
Roughness of pile area (number of times cells alternate between empty and filled as any row or column is scanned)
The rankemmilta pinossa, sitä todennäköisempää on, että se tulee olemaan vaikea täyttää kaikki kytketyn monimutkainen contours, kun ne altistuvat pintaan.
Number of buried empty cells
Mitä enemmän reikiä meillä on haudattu, huonompi meidän tilanteemme on, koska meidän on paljastamaan haudattu reikää, ennen kuin voimme täysin vastaavat rivit.
Voitte kuvitella muita tekijöitä, jotka yleensä korko, jonka hypoteettinen aluksella, miten hyvin sen kasa mahtuu kaikki mahdollinen tulevaisuuden kappaletta, ja siitä, miten hyvä tilanne näyttää kaikille niille mahdollista kappaletta.
Seuraava kysymys on, miten määrittää suhteellinen merkitys näistä tekijöistä.
Yksi yleinen lähestymistapa on seuraava.  Määrää joukon "painot" (suhteellinen merkitys) näihin tekijöihin, ja sitten simuloida lukuisia pelejä ja kirjataan tulokseen nämä pelit (lopulliset pisteet jne.).  Sitten, luovuttaa uuden sarjan painot ja simuloida uusia pelejä.  Perustuen vai ei uuden sarjan pelit olivat parempia tuloksia kuin edellisen sarjan pelit, me tiedämme, jos uusi sarja painoja oli parempi kuin edellinen sarja painoja.
Omassa kokeiluja olen yrittänyt järjestelmällistä etsimistä ja satunnaisesti etsimällä hyvä paino yhdistelmiä, mutta en ole havainnut suuren mittakaavan suuntauksia, että voisin jatkaa.  Olen kuitenkin nähnyt monia yllättävän sujuvaa kuoppia.  Minusta oli mielenkiintoista, että keskimääräinen suoritustaso voisi muodostaa sileä käyrä, kun parametri oli hitaasti vaihteli muiden parametrien järjestettiin joitakin arvo yhdistelmä.
Paras reaaliaikaisesti, yksi-osainen Tetris algoritmi on maailma, joka on syntynyt Pierre Dellacherie (Ranska) 2003, velkaa paljon, että se on onnistunut sen joukon mittauksia (tai käyttötiedot).  Finding painot on tarpeen, kun optimoimalla strategia, mutta se on myös kriittinen ensin erilaisia mittauksia, että paljasta asiaa ominaisuudet tilasta.
Pierre Dellacherie's keksintö uusia tapoja luonnehtivat kunkin aluksella tekee hänen algoritmi todella hienoa, aluksella characterizations vangita tärkeät strategiset mitat hallituksen tilassa.
Yksi voisi kehittyä hyvin eri sarja luonnehdinta mitat, jotka toimivat yhtä hyvin, ja olen varma, että se on mahdollista span asiaa aluksella tila-avaruus monin eri tavoin, että voidaan määrittää strategia tehtävän.  Tärkeintä on löytää ominaisuuksia, että hankkeen tila-avaruus alas pieni joukko ulottuvuuksia, joita voidaan käyttää kehittämään yksinkertaisia luokitusjärjestelmiä tehtävä (esimerkki: lineaarinen painotettu yhdistelmien ominaisuuksia käytetään Pierre's algoritmi).
Yksi-osainen algoritmin käyttämä "bot" "xtris"-ohjelmisto (1996) on kirjoittanut Roger Espel Llima käyttää painot määritetään laajamittainen etsintä mahdollisista paino yhdistelmiä "geneettiset algoritmit".  Simuloidun hehkutus on toinen mahdollinen tapa tutkia moniulotteiseen avaruuteen painon yhdistelmiä.
Vaikuttaa siltä, että joka perustuu eri havaintoja, moniulotteinen tehtävä keskimäärin Tetris suorituskyvyn funktiona painoista, esimerkiksi: F(w1,w2,w3,...), on "karkea" (paljon paikallisia alarajoja ja maksimit), mikä tarkoittaa, että yksinkertainen moniulotteinen "hill climbing" ei välttämättä toimi.

6.9 Strategia, kun nykyinen osa, seuraava pala, ja kartonki ovat tiedossa

Jos strategia algoritmi on esitetty nykyisen pala, ensi pala, ja kartonkia, niin se voi tehdä päätöksiä, jotka hyödyntävät yhdistelmä kappaletta.
Tiedot seuraavan palan voi parantaa menestyksen kannalta Tetris pelaa algoritmi useita tilauksia suuruusluokkaa.  On helppo ymmärtää, miten tietää seuraavan palan tekee suuri ero strategiaa.
Yksi voi tehdä "hullu" liikkuu, kuten kattaa valtavia reikiä, jne., koska he tietävät jo, että seuraava kappale voidaan "korjata" tilannetta.  Jos sinulla ei ole tietoa seuraavan nappulan, olet jatkuvasti yrittää pelata kertoimella, yrittää pitää vaihtoehdot avoinna, jos seuraava palanen ei ole ihanteellinen.
Seuraavassa luonnos osoittaa, miten kaikki mahdollinen liikkuu nykyisen pala katsotaan, ja kunkin tällaisen liikkua pidämme kaikki mahdollinen liikkuu, joihin ensi pala.
tetris_piece_and_next_with_metrics01.jpg
Strategian, johon nykyinen pala ja ensi pala
The Standard Tetris-ohjelmisto käyttää tätä strategiaa, kun "Next Piece" on käytössä käyttäjän ja näkyy ruudulla, ja kun kaksi-osainen A.I. on käytössä (kuten yhden kirjoittanut minulle, Colin Fahey).  Jos "Seuraava Piece" ei ole näkyvissä näytöllä, minun kaksi-osainen putoaa takaisin yhden palan A.I..
Oma yhden palan A.I. on kauheaa, jos sitä verrataan muiden AIs, Standard Tetris ohjelmistot, joten tämä osoittaa teille hyödyllistä lisätietoa (esimerkki: seuraava kappale) voidaan joka A.I. järjestelmä, ja se on riittävän suorituskyvyn parantamiseksi omassa keskinkertainen kaksi-osainen A.I. useita tilauksia suuruusluokkaa - helposti ylitti suorituskyvyn paras-osainen A.I. koko maailmassa.
(Kuitenkin muuntaa paras-osainen A.I. että maailma harkitsemaan kaksi voisi helposti parantaa sitä useita tilauksia suuruusluokkaa, too!  Tietävä seuraavan pala on valtava!)
Ensimmäinen testi peli minun kaksi-osainen A.I. kesti noin 182 tuntia (7,6 päivää), joka 800 MHz PC, täyttämällä 7216290 riviä.  En ole testannut algoritmi on nopeampi tietokone.
Kun säästää tilaa, jossa Tetris peli (Shift-W) on tekstitiedosto, voit kopioi ja liitä luettelo numeroista, osa "heightHistogram", Excel-taulukkolaskentaohjelmassa.
Jokainen bin vuonna histogrammin osoittaa, kuinka monta valmistunut liikkuu, että päättyi erityisesti kasa korkeus (sen jälkeen kun täydellinen rivit on poistettu).  Kuten voitte kuvitella, mikä on liikkua, että täysin poistaa kasa on harvinaista, joten kokonaismäärä liikkuu, että se päättyy kasa korkeus on nolla, on suhteellisen alhainen.
Sillä välin, voit odottaa, että kasa korkeus yleensä vaihtelee noin joissakin keskiarvon, joten roskakorit vastaavat näitä rivejä hallitsevat histogrammin.  Lopuksi, roskakorit, että huippu-useimmat rivit (missä olemme vaarassa täynnä hallituksen) on erittäin alhainen kokonaismäärät.
Aikana monta tuntia, kun A.I. pelaa yhden pelin avulla strategialla, johon tuntemus "Seuraava Piece", otin satunnaisia näytteitä pelin tilasta, kopiointi pinossa korkeus histogrammit, taulukkolaskenta kuten seuraavasta taulukosta käy ilmi:
std_tetris_pile_height_hist_raw01.jpg
Pile korkeus histogrammit kirjataan eri kohdissa tyypillinen peli (nykyinen-ensi-osainen strategia)
Voit asteikon kunkin histogrammin, jonka kokonaismäärä kappaletta (kokonaismäärä valmistunut siirtoa), jotta saat seuraavat tiedot:
std_tetris_pile_height_hist_scaled01.jpg
Skaalattuna histogrammit, ja teoria
Huomionarvoista on, että nämä skaalattuna histogrammit etsimään samanlaisia, vaikka eri tilauksia suuruusluokka määrä kappaletta (valmistunut liikkuu).
Just tarkastelemalla numerot tein hypoteesin, häntää, että käyrä on exponential decay.  Haparoiden I tuli laatia karkea teoria, että häntä oli kuvattu seuraavasti:
relative_frequency = ((0.122) * ((0.375)^(row-5)))
Seuraavassa kuviossa näkyy skaalattuna histogrammin koko joukon rivejä.
std_tetris_pile_height_hist_curve_full01.jpg
Graafi skaalattuna histogrammit
Huomaa, että käyrän mukaan 50000 kappaletta, ja käyrä-2000000 kappaletta, ja käyrä häntää teoriassa ovat lähes erottamattomat tässä mittakaavassa.
Seuraavassa tarkastellaan tarkemmin johtajan käyrä.
std_tetris_pile_height_hist_curve_head01.jpg
Pienempi osa korkeus histogrammin
Seuraavassa on suuresti-suurentaa otetaan huomioon äärimmäiset häntää lopussa mitattu ja teoreettinen histogrammin käyriä.
std_tetris_pile_height_hist_curve_tail01.jpg
Suurennettu mielestä äärimmäisen häntää loppuun skaalattuna histogrammit
Kuten voitte odottaa, se on hyvin harvinaista, että pinossa pääse näihin korkeuksiin, vaikka kauan kokeiluja - mutta jopa meidän vähän näyttöä siitä, että tämä äärimmäinen alueella, teoriassa vielä vaikuttaa hyväksyttävältä.
Valitse koko chart teoria näyttää päällekkäin häntää, jakelua "täsmälleen", kun taas suurentaa Chart of the tail, häntää, näemme ilmeinen virhe.  Olen kuitenkin väittää, että tämä on riittämättömien tietojen vuoksi näitä äärimmäisiä kasa korkeuksiin.  Jos olen lisännyt pelilaudan, sanovat, jonka korkeus on 25 riviä sijasta 20 riviä, niin että pelejä ei ole lopettaa äkillisesti, olen sitä mieltä, että teoriassa esittelin edellä yhteensopivuus täydellisesti suuntausta.
Oma tunne on, että tämä histogrammissa on suora yhdistetty tulos on Tetris A.I. ja säännöt Tetris.  Niin, tämä sama jakelu on noudatettava minkä tahansa satunnaisesti pitkän aikavälin peli Tetris käyttäen minun erityisesti A.I. strategia leikkii "Seuraava Piece" tietoon.
Lisäksi olen sitä mieltä, että tämä tyyppi histogrammin avulla voidaan vertailla AIs, jotka työllistävät samat tiedot leikkiessään.  Näin ollen sinun ei tarvitse olla täydellinen pelit (mikä voi kestää päiviä tai vuosia) vertailla pitkän aikavälin suorituskykyyn eri strategia algoritmeja.
Esimerkiksi siitä huolimatta, yksinkertaisuus oman mallin, minusta se voidaan ennustaa keskimäärin pelin kesto!  Emme yksinkertaisesti selvittää, kuinka monta kappaletta tekee "rivi 21" kasa korkeus huomattava määrä, kuten count yhden.
Suhteellinen taajuus rivi 21, mukaan minun yksinkertainen teoria, on:
((0.122) * ((0.375)^( 21 -5 ))) = 1.8 * 10^(-8)
Sinun on moninkertaistaa tämän numeron (5.3 * 10^(7)), noin 50 miljoonaa, saada arvo yksi.
Näin ollen, olen suurin piirtein ennustaa, että minun nykyinen "Seuraava Piece" strategia on vain hyvä, jotta noin 10 miljoonaa loppuun rivit.  Yksi syy Teen tämän konservatiivinen arvio on se, että jopa 18 riviä voi olla tappava minun A.I. koska en salli minun A.I. harkitsemaan kappaletta, kunnes he ovat laskeneet vähintään yksi rivi!  (Tämä on niin minun ei tarvitse huolehtia siitä, ettei voi pyörittää kappaletta.)
Olen vaikuttunut siitä, että pelaa vain 50000 kappaletta (ja mahdollisesti paljon vähemmän kappaletta) voi antaa sinulle erittäin hyvä arvio pitkän aikavälin korkeus histogrammin, ja näin ollen hyvä arvio siitä, suuruusluokka on valmistunut rivit ennen pelin päättyy.  Tämä lähestymistapa on erittäin arvokasta nopeasti arvioida hienoisia muutoksia on A.I., että on jo erittäin hyvin.

6.10 Hallituksen arviointi käyttötiedot jäljitellä spekulatiivisten katsoa eteenpäin

Jos algoritmi, kuten yhden esittelin tätä hanketta, yksinkertaisesti yrittää kaikki pala suuntia ja käännöksiä laskussa, ja korot kunkin tuloksena hallituksen kokoonpano Joidenkin mukaan toimenpide ansioiden, algoritmi on pääosin jäljittelemällä "katsoa eteenpäin".
Kun yksi työllistää käyttötiedot, kuten "kasa korkeus", "haudattu reikiä", "pinnankarheus" tai "hyvin syvyydessä", yksi on todella käytetään yksinkertaistetussa muodossa "katsoa eteenpäin".  Nämä yleiset characterizations: n hallituksen antaa jonkinlaista osviittaa sen pitkän aikavälin elinkelpoisuuden linjan.
Ihanteellista lähestymistapaa, koska on loputon määrä computing valtaa, olisi arvioitava hallituksen kokoonpano annetaan kaikki mahdolliset pala-ketjuja, jotka voivat seurata.
Vaikka sinulla on otettava huomioon kaikki 7 kappaletta kuin on yhtä todennäköistä, jokaisella kolmella tasolla katsoa eteenpäin, sinun täytyy optimoida varsinaista käännökset (enintään 10) ja suuntaviivat (enintään 4) kunkin palan kaikin mahdollisin järjestyksessä!  That's enintään (7*10*4) = 280 sivukonttorit kaikilla tasoilla: n hallituksen arvio!  So, that's enintään ((280)^(LookAheadLevels)) aluksella kokoonpanoissa harkita.
Koska meidän täytyy lopettaa analyysin jälkeen rajallinen määrä tasolle, meillä on oltava joitakin ei-look eteenpäin menetelmä arvioitaessa aluksella valtion - tapa antaa arvoja, leaf solmut meidän search tree.  Niinpä näiden leaf solmut, olemme takaisin käyttäen kaavaa, että edustaa yleistä ennustavina tulevaa elinkelpoisuutta, aluksella!
Tämän tyyppistä spekulointia voidaan kokeilla kanssa One-Piece ja Two-Piece algoritmeja sijasta yksinkertaisiin aluksella arviointi käyttötiedot.  Oletetaan, että kaikki myöhemmät kappaleet ovat yhtä todennäköisiä ja olen jopa kyvyt hallituksen mukaan paloja kaikenlaisia vuonna parhaalla mahdollisella tavalla.  Tämä voidaan suorittaa yhden, kahden, tai useita spekulatiivisia liikkua syvyydessä - kaikki palaset ovat yhtä todennäköisiä (p=1/7).
Terminaalin solmut tämän puu voi vielä vaatia painotettu käyttötiedot voidaan arvioida, mutta spekulatiivinen kerrosten täsmällisemmin pyydystäminen pohjimmiltaan siitä, mitä haluamme tehdä: määrittää, miten hyvin tietyn hallitus voi hyväksyä kaikki mahdolliset kappaletta, mukaan lukien myönteiset tekijät, kuten täyttämällä riviä ja negatiiviset tekijät, kuten lisäämällä yleistä kasa korkeus, jne.

7. Tetris A.I. järjestelmän esittelyn

7.1 System overview

Seuraavassa kaaviossa osoittaa minun kokeellista perustaa.
tetris_diagram_overall_system_03.jpg
Kokonaisuutena järjestelmä esittelyä

7.2 Laitteet

Seuraavassa on lyhyt lista laitteista, joita käytetään tämän esittelyn
[1] Ontrak Control Systems ADR2200 RS-232 8-Relay Board: $149.00 (USD 2003)
[2] Ontrak Control Systems ADRPWR Power Supply         : $ 12.95 (USD 2003)
[3] Creative WebCam Pro (640x480 USB video camera)     : $ 39.95 (USD 2003)
On selvää, voit käyttää vastaavia laitteita saavuttaa samat tulokset.  Lisää yksityiskohtia koskevia laitteet on kuvattu vastaava kohta tässä artikkelissa.
Seuraavassa on lyhyet kuvaukset henkilökohtaisissa tietokoneissa käytetään tässä esittelyä:
[1] Personal Computer (PC), 350 MHz, Windows 98   [Runs video game]
[2] Personal Computer (PC), 800 MHz, Windows 2000 [Runs AI program]
Tämä esittelyä voitaisiin helposti kopioida muihin käyttöjärjestelmiin, kuten Linux.  On tärkeämpää on CPU nopeus järjestystä 800 MHz tai nopeampi tietokone, joka ajaa A.I. ohjelmistoja, koska tämä tietokone tekee reaaliaikaista käsittelyä video.

7.3 Videon kaappaus laitteisto

Olen käyttänyt yhteistä USB videokamera kuten videon kaappaamiseen laitteen omalle A.I. järjestelmä.  Tarkemmin, olen käyttänyt Creative "WebCam Pro", USB videokameran kanssa 640 * 480 päätöslauselmaa.
creative_web_cam_pro_site.jpg
Creative(TM) USB videokamera kuvaus
http://us.creative.com/products
tetris_web_cam_angle.jpg
USB videokamera (kulma)
tetris_web_cam_front.jpg
USB videokamera (edessä)
tetris_web_cam_ccd.jpg
USB videokamera (kartonkia CCD)
tetris_web_cam_chips.jpg
USB videokamera (pääasiallinen siruja)
tetris_web_cam_ov511_blocks.jpg
OV511 tärkeimmät lohkot (huomaa: USB videokamera on OV511+)

7.4 OV511 data sheet

ov511ds.pdf
OV511 Data Sheets
1136328 bytes
MD5: e927d786e16baea59b7e7e54529778c0

7.5 OV511+ ( "plus")-toiminto erot

ov511plus_101.pdf
OV511+ Feature Erot
56271 bytes
MD5: 388a03c56d6f67d6d5d80e3d06c4de21

7.6 Videon kaappaus-ohjelmisto

Microsoft on hyvin vanha API nimeltä "Video for Windows" (VFW), että olen onnistuneesti käyttää tässä hankkeessa.  (Sinun linkki "vfw32.lib" in your C++ hanke, tai tee DllImport "vfw32.dll" in your C# koodi.) Esimerkkejä käyttäen VFW API ovat laajalti saatavilla.
Toinen vaihtoehto on käyttää Microsoft's "DirectShow" API tehdä videon kaappaamiseen.
Koska VFW kesti vain kymmenkunta riviä koodia käyttää, ja suoritti hyväksyttävällä minun 800 MHz koneella, en vaivaudu tutkitaan vaihtoehtoisia APIs.  Mutta DirectShow on enemmän contemporary API for Windows videon kaappaamiseen, ja mahdollisesti sadoista paljon suuremmilla ruutunopeuksilla että samoja laitteita.
Look at "CPF.StandardTetris.STVideoCapture" lähdekoodi tiedostot Standard Tetris ohjelmistojen nähdä, kuinka helppoa se on saada videon kaappaamiseen, omaan hankkeita.

7.7 Computer Interface-releet (RS232)

Oltava yksi tietokone "paina näppäimiä" näppäimistön toiseen tietokoneeseen, I käytetään "relay board" valvoo teksti komennot lähetetään järjestysnumero viestintä-portti (esimerkiksi: "COM1") kautta RS-232 kaapeli.  I käytetään kunkin rele yhdistää kaksi johdoissa erityinen näppäimistön näppäintä simuloida keskeinen lehdistössä.
Tämä edellytti avaaminen näppäimistö ja liitännät.  On paljon helpompaa menetelmiä, joilla simuloidaan keskeinen painamalla aikaa tietokoneen, mutta halusin tehdä jotain, että tuntui niin lähelle kuin mahdollista, jotta henkilö todella konekirjoitus-näppäimistö.
Yksi erittäin monipuolinen ja hyvin tehty viestissa aluksella on ADR2200 tekemät Ontrak Control Systems:
ontrak_adr2200_board.jpg
Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
ontrak_adr2200_web_site.jpg
Ontrak Control Systems ADR2200 RS232 / RS485 Relay I/O Interface
http://www.ontrak.net/adr2200.htm
Voit tarkastella "CPF.StandardTetris.STRS232" lähdekooditiedostoja nähdä, kuinka helppoa se on lähettää bytes kautta sarjaportti, jota voidaan sitten käyttää valvonta-laitteiden, kuten ADR2200 aluksella edellä on kuvattu.

8. Standard Tetris-ohjelmisto

8.1 Lataa ohjelmisto

Siirry alkuun Tämän artikkelin löytää linkki lataa lähdekoodi (C# ja C++ versiot) ja rakennettu ohjelmisto (*.exe).

8.2 Yhteenveto ominaisuuksista

Ohjelmiston ominaisuuksia:
Instruction seuloo ja luottojen
Yksivärinen mode
Shadow mode
Vihje mode
Junk rivit
RATE-säädin
Seuraava kappale
Hallituksen kokoa
S/Z kappaletta
Calibration mode
Videon kaappaus ja tunnustaminen
Debugging konsoli
Tallenna peli
Load game

8.3 Lähtölista ulkonäkö

Ulkonäkö kun ohjelmisto on aloitettu:
tetris_app_startup.jpg
Ulkonäkö kun ohjelmisto on alkanut

8.4 Yksivärinen mode

Oletuksena on, että aluksella näkyy väri:
tetris_app_colormode01.jpg
Oletuksena on, että aluksella näkyy väriä.
Väri-tilassa voidaan muuttaa mustavalko (Shift + K):
tetris_app_colormode02.jpg
Väri-tilassa voidaan muuttaa mustavalkoinen.

8.5 Shadow mode

Shadow tilassa osoittaa, mihin pala on maa.  Tämä on erittäin hyödyllinen hyvin suuria boards, koska se on vaikea arvioida, missä palanen tulee maalla.
tetris_app_shadowmode.jpg
Shadow tilassa osoittaa, mihin pala on maa.

8.6 Vihje mode

Vihje tilassa osoittaa, mihin tällä hetkellä valitun AI voisi liikkua, kun otetaan huomioon nykyinen tilanne.  (Shift + H)
tetris_app_hintmode.jpg
Vihje mode näyttää, mihin tällä hetkellä valitun AI voisi liikkua.

8.7 Junk rivit

Lisää "roskaruokaa" rivit alareunassa pinossa, yksi kerrallaan manuaalisesti.  (Shift + J)
tetris_app_junkrows.jpg
Lisää "roskaruokaa" rivit alareunassa pinossa.

8.8 RATE-säädin

The '+' (plus) ja '-' (miinus)-näppäimiä valvonnan nopeuden pelin.
Oletuksena on, että peli ajoa standardin nopeus, sääntöjen mukaan Standard Tetris (nopeus perustuu taso).
Tässä on taulukko, merkityksiä nopeuden harha:
-3,-4,...: hitaus verrannollinen bias
-2: hitaammin kuin tason 1
-1: normaali, mutta rajoittuu tasolle 6 (0,2 sek) nopeus;
0: normaali; Standard Tetris nopeuksien valvonta;
+1: hieman nopeammin kuin tasolla 9 (0.05 sec viiveitä);
+2: rajoittaa tekemällä rate (esimerkki: 75 Hz);
+3,+4,...: useiden toistojen per renderoitu frame;
Haluan ajaa A.I. joka asettaminen "+2" (hit '+' näppäintä kaksi kertaa, jos bias alkaa nollasta).
tetris_app_speedcontrol.jpg
Speed bias muuttaa nopeutta pelin.

8.9 Näytä seuraava kappale

Hit "N" vaihtaa "Seuraava Piece" näyttö.  The A.I. käyttää "Seuraava Piece" tietoja vain, jos "Seuraava Piece" ilmestyy ruudulle.
Voitte olla varmoja siitä, että AI ei käytä "Seuraava Piece" tietoja, jos et voi nähdä "Seuraava Piece"-näytön.
tetris_app_nextpiece.jpg
Näytä seuraava kappale

8.10 Hallituksen kokoa

Painamalla Ctrl + (vasemmalle, oikealle, alas asti), voidaan muuttaa hallintoneuvoston kokoa mielivaltaisesti koot 4 * 4 jopa 200 * 400.
tetris_app_boardsize.jpg
Kortin koko: 4 * 8
tetris_app_board20x40.jpg
Kortin koko: 20 * 40
tetris_app_board40x80.jpg
Kortin koko: 40 * 80
tetris_app_board20x5.jpg
Kortin koko: 20 * 5
tetris_app_board4x100.jpg
Kortin koko: 4 * 100

8.11 S/Z palaset vain

Tutkimus mielenkiintoinen vaihtuen S/Z rakenteessa.
Tämä malli ei voida ratkaista: 10 * 20 aluksella (leveys * korkeus).
Kuitenkin, levyt, jotka ovat leveydeltään, jotka ovat kerrannaisia 4 ovat trivially osoittanut, jotta ääretön selviytymistä.
The AIs hengissä loputtomiin näissä tapauksissa, vaikka ne eivät olleet nimenomaan viritetty käsittelemään tätä patologinen tilanne.
tetris_app_sz_pieces.jpg
S/Z palaset vain

8.12 Video kalibrointi tilassa

Hit "C" syöttää "Kalibrointi Mode".  Kun kalibrointi-tilassa, voit painaa numeronäppäimiä: {1,2,3,4,5,6,7} valita pala {O,I,S,Z,L,J,T} yläreunassa ja tasapuoliset.
Tämä on hyödyllinen viittaus kuvaa videon kaappaamiseen, toinen Standard Tetris ohjelmistoja.
Jos et paina 0 (nolla)-näppäintä, se tekee aluksella tyhjäksi.
Et voi teeskennellä spawn kappaletta valitsemalla pala (1..7), ja sitten valitsemalla tyhjäksi (0), kun taas toinen tietokone tekee videon kaappaamiseen kellot for kappaletta.
Voit suorittaa A.I. koskevaan toiseen tietokoneeseen ja katso, miten se käsittelee oman manuaalisesti tuli patologinen Tetris skenaarioita!
Kalibrointi Mode on ainoa kerta, voit muokata videon kaappaamiseen kuvien käsittely malli (4 * 2 grid).  Voit käyttää hiirtä piirtää suorakulmion, mutta sitten voit käyttää kursori-näppäimiä ( "ylös", "alas", "vasen", "oikeus") saada sakon valvontaa rajoilla - käyttämällä Shift näppäintä valitsemaan päinvastainen rajat suorakulmion (esimerkki: "Shift-left" combo on erilainen kuin "left").
tetris_app_calibrate.jpg
Video kalibrointi tilassa

8.13 Videon kaappaus ja tunnustaminen

Painamalla "V" mykistää ja poistaa videon kaappaamiseen tilassa.  Jos oikein kalibroitu (ks.  "video kalibroinnin", kun edellinen jakso), palaset kauko-video screen on kaapattu, että videokamera ja luokiteltu - ja palaset on saanut vuonna paikalliset peliä varten A.I. pohtia ja reagoida .
The A.I. tuotos on sen jälkeen toimitettu (kautta RS-232 käyttöliittymä, esittelyä kuvataan tässä artikkelissa) kauko-pelin panos (esimerkki: näppäimistö), A.I. menestyksekkäästi olla kauko-peli.
Jos milloin tahansa tämän suljetun kierron on häiriintynyt (esimerkki: video capture toimintahäiriö, tai ulostulosignaalin toimintahäiriö), niin A.I. kehittää väärän vaikutelman tilan kauko-peli, ja A.I. tekee sopimatonta päätöksiä siitä, että nopeasti menettää pelin .
(Huomautus: Tämä ongelma voidaan ratkaista, joilla on vaatimaton verran vaivaa: A.I. järjestelmä tarvitsee vain tutkia koko kauko-Tetris näytössä on käynnissä "todellisuuskokeeseen" koko lauta, ja A.I. järjestelmä olisi valmis jo jonkin tuotoksen komentoja epäonnistua joissakin tavalla.)
tetris_app_videocapture.jpg
Videon kaappaus ja tunnustaminen

9. Alkuperäinen Tetris AI kokeilun (2003)

Seuraavassa esitetään ensimmäisenä työpäivänä versio, Tetris A.I. järjestelmän vuonna 2003.
standard_tetris_demo_camera.jpg
Video kameran edessä tietokone # 1 näkyä mitään selvää Tetris peli
standard_tetris_demo_ai.jpg
Tietokone # 2 näkyä Standard Tetris ohjelmistojen A.I. mode
standard_tetris_pattern_sequence.jpg
Vasen: Piirustus ruudukon kalibroida video kuvaa tunnustamista;
Oikeus: Tetris pala tunnustamista tapauksissa.
tetris_experiment_video_clip_frame.jpg
Frame-video Tetris A.I. kokeilun vuonna 2003

10. Best yksi pala Tetris-playing algoritmi, maailma

10.1 Pierre Dellacherie (2003, Ranska)

photo_pierre_dellacherie.jpg
flag_france.jpg
Pierre Dellacherie (2003, Ranska), kehittäjä paras-osainen Tetris-playing algoritmi, maailma
Paras yhden nappulan, reaaliaikainen Tetris algoritmi minun tietääkseni oli luotu Pierre Dellacherie, Ranska.
Hänen amazing algoritmi joskus täyttää yli 2 miljoonaa riviä!
Keskimääräinen suoritustaso on järjestyksessä 650000 riviä.
Algoritmin vie hyvin vähän muistia ja toimii suurella nopeudella (noin 160 riviä sekunnissa minun 800 MHz tietokone).
Tehtävien Pierre Dellacherie's algoritmi:
Oma nykyinen malli suorittamista varten Tetris Aitousvarmennuksilla on, että jokaisen palan on jatkuva todennäköisyys, että peli päättyy, p.
Näin ollen todennäköisyys, että pala ei lopettaa peli on q=(1-p).
Todennäköisyys, että peli päättyy, kun k liikkuu vain tuotteen todennäköisyys jälkeenjäänyt (k-1) liikkuu, eli q^(k-1), ja todennäköisyys, että lopettamista koskevat ensi liikkua, eli p.
Tämä vastaa "Geometric Distribution":
Geometric Distribution:

P(k) =  p * [(1-p)^(k-1)] = p * [q^(k-1)]  = p * exp[ln(q) * (k-1)]

MEAN:                [1/p]
VARIANCE:            [q/(p*p)]
STANDARD DEVIATION:  sqrt( VARIANCE )
Pienten p, ln(q) on noin (-p), ja meillä on seuraavasti:
Exponential Distribution:

P(k) =  p * exp[-p * (k-1)]
     =  p * exp[-p *  k   ] approximately

MEAN:                [1/p]
VARIANCE:            [1/(p*p)]
STANDARD DEVIATION:  sqrt( VARIANCE )
Odotamme, että murto-osa kokonaismäärästä pelataan pelejä lopettaa useita loppuun rivit haastatteluajankohdan [k1, k2] on:
Integral of the Exponential Distribution:

I(k1,k2) = exp[-p * k1] - exp[-p * k2]
Kun täytätte 36 pelit omalta tietokoneelta aikana kaksi päivää, Löysin keskimäärin 674827 valmistunut rivit.
Mukaan yleisen teorian edellä, odotan seuraavan suhteellinen osuus pelit loppuun, seuraavat loppuun rivi pakkauskoot:
p = (1/674827) = 0.000001482 = 1.482*10^(-6)

  Completed Row Range       Relative Fraction of Total Games
=======================     =================================
        0 ...   400 000      [exp( 0   )-exp(-0.59)] = 0.447
  400 000 ...   800 000      [exp(-0.59)-exp(-1.19)] = 0.250
  800 000 ... 1 200 000      [exp(-1.19)-exp(-1.78)] = 0.135
1 200 000 ... 1 600 000      [exp(-1.78)-exp(-2.37)] = 0.075
1 600 000 ... 2 000 000      [exp(-2.37)-exp(-2.96)] = 0.042
2 000 000 ... 2 400 000      [exp(-2.96)-exp(-3.55)] = 0.023
Tässä on kaavio, että verrataan Exponential Distribution teorian kanssa havaittu jakelu pelejä.
tetris_pdellacherie_exponential_theory01.jpg
Tehtävien Pierre's algoritmi yli 36 valmistunut pelit
Vaikka on olemassa hyvin vähän pelejä tässä tiedot, on ilmeistä, että malli on melko hyvä yhteensovitus havaitun jakeluun.
Pierre's käyttöönotto hänen algoritmi:
Pierre aloitti työn tämän yhden palan algoritmi vuonna 2003,1.
Pierre lähetti minulle e-mail hänen algoritmi, 2003.4.9, raportointi seuraavat suorituskykyä yli 20 peräkkäistä peliä:
Game  1 :  1 213 220 rows
Game  2 :    876 618 rows
Game  3 :     37 327 rows
Game  4 :    260 337 rows
Game  5 :    165 349 rows
Game  6 :  2 288 991 rows
Game  7 :  1 112 094 rows
Game  8 :    138 648 rows
Game  9 :    107 089 rows
Game 10 :  1 284 387 rows
Game 11 :    935 011 rows
Game 12 :     80 766 rows
Game 13 :    253 158 rows
Game 14 :  1 877 331 rows
Game 15 :    145 034 rows
Game 16 :    888 081 rows
Game 17 :    433 694 rows
Game 18 :     15 446 rows
Game 19 :    494 498 rows
Game 20 :     16 273 rows

Average is   631167 completed rows.
"Algoritmi on toteutettu Turbo Pascal ja täydennetään 7000 riviä / min.  Kanssa Athlon 1600+."
I muunnetaan Pierre's algoritmi, C++ vuonna 2003,6, kun useita e-mail vaihto Pierre.  Olemme tarkistaneet, että A.I., C++ versio teki saman päätöksiä, Pascal versio.
I havaittu samanlaista suoritusta hänen alkuperäinen kertomus; keskimäärin noin 650000 valmistunut rivit, ja jotkut pelit täyttämällä 2 miljoonaa riviä.
Incredible!

10.2 Conversation with Pierre Dellacherie

[1] Kun olit ensin luotava tätä koodia?
Olen työskennellyt algoritmin alkaen tammikuun lopulla 2003 asti.
[2] Kuinka kauan olet työskennellyt?
Olen työskennellyt lähes joka viikko ...  mutta ei jokapäiväiseen kauan, koska minulla on muuta toimintaa: valitettavasti minun täytyy ansaita rahaa kuin kukaan muu!
[3] Mikä inspiroi suunnittelu koodi?
Olen ollut Tetris 10 tai 15 vuotta sitten, mutta minulla ei ollut vielä kerran pitkään aikaan.  Sanoisin, että olen "keskimääräisellä" Player jotka tuntee säännöt ja joitakin temppuja.
Kuitenkin, kun aloin työskennellä algoritmin En pelata niin paljon, koska olen löytänyt se oli pikemminkin tehokkaampaa katsella tietokoneella pelaaminen ja analysoida hänen heikkoutensa.
[4] Oliko sinulla käyttää mitä tahansa automaatio-, "juna-koodi" toimii paremmin?  Oliko sinulla on palautetta parantaa algoritmi?
Tai ette yksinkertaisesti katsella tuloksia ja päättää tehdä muutoksia?
Olen "vanha koulu:" Olen yksinkertaisesti katseli tulokset ja päätti tehdä muutoksia.
"Automaattinen oppiminen" on eräänlainen meta-algoritmi, joten en ole varma, että teemme sen tällä tavoin voisi saada helpommin kuin tämän meta-algoritmi olisi rakennettu liian ja että ei ole niin helppoa!
What's more, olen samaa mieltä Roger Penrose, kun hän sanoo (kirjassaan "Shadows of the mind"), että ihmisten ymmärrystä ja intuitio ei voida algoritmi (esimerkki: computable).
[5] Kun olit aluksi playing Tetris, ja kun ei sinulla on ajatus ratkaista Tetris kanssa A.I.?
I opettaa algoritmi ja atk-ohjelmointi (Turbo Pascal ja Scilab) opiskelijoille jotka Junalla entrance tutkimista Diplomi-insinööri: n kouluissa.
Ensimmäisessä, "Tietokone pelaa Tetris" on ajatus, jonka halusin kehittää oman ensi vuoden opiskelijoita.
En ollut tietoinen web-sivulle, kun aloin työskennellä algoritmin.
Itse olin onnekas olla tietoinen web-sivulla vain muutama viikko sitten, koska minun mielestäni olisi ollut lannistua hakutuloksia (kuten voitte arvata, alussa versiot minun algoritmi ei pelata niin hyvin!).
[6] Mikä on tämänhetkinen tila?
Olen lähes 30 [ennen vuotta 2003 huhtikuu 27].  Minulla on useita toimintoja: Olen sellisti, I säveltää musiikkia ja minä opettaa tietokoneen ohjelmointiin.
Minulla on ylempään korkeakoulututkintoon Musiikkitieteen (1994) ja "Artificial Intelligence and Algorithmic" tutkintotodistus (1998).
Ranskassa tämä tutkintotodistus vastaa 5 vuoden opiskelu yliopistossa (4th vuosi on ylempään korkeakoulututkintoon ja 6 vuosi on väitöskirjaansa).
Pierre's sävellyksiä:
http://perso.club-internet.fr/dellache/Personnel/scores2.html
[7] Missä asua?
Olen ranska ja minä asun Rouen (Normandy).
[8] Muita kommentteja:
Lopulta minulla ei ole mitään uutta ajatusta parantaa sitä.
Olen yrittänyt niin paljon hyödytöntä (ja typerä) asioita, että epäilen sitä voitaisiin parantaa.
On the other hand, minusta ei ehkä ole täysin erilaisia algoritmeja, joilla voisi olla parempi suorituskyky.
Muuten, nopeamman testi koostuu Käynnistäessään kappaletta, joka puoli-box (10 riviä x 10 saraketta): puoli-box, minun algoritmi tekee keskimäärin 280 loppuun rivit.
Vielä yksi asia: algoritmi voidaan helposti muuttaa kaksinkertaisen harjoittavat algoritmi ([Teen] testien pian).
Rakastan elokuvamusiikki: tulossa elokuva säveltäjä on osa minun suurimmat unelmat (mutta se on vain unelma!).

11. Best ihmisten toimija maailmassa

11.1 Japani Tetris Master (2001 tammikuu 27) video

flag_japan.jpg
tetris_japanese_master_2001_frame.jpg
Tetris päällikön (2001; Japani) video
Arika esittelee japani Tetris-lopputurnaus päällikön (2001 tammikuu 27).  "TETRIS THE ABSOLUTE PLUS --The Grandmaster2-- DEATH-MODE"

12. Palaute

12.1 Slashdot thread (2003)

Vuonna 2003, my Tetris A.I. hanke oli keskusteltu, Slashdot Internet-foorumi (http://slashdot.org).
tetris_slashdot_article_headlines.jpg
Slashdot (http://slashdot.org) Internet-foorumi otsikko keskustelun minun Tetris A.I. hanke
Benefactor of mankind--thank you! (Score:4, Funny)
by EnlightenmentFan (617608) on Tuesday January 28, @02:29PM
(#5176294)
(http://betsydevine.weblogger.com/ | Last Journal: Tuesday
January 21, @01:55PM)

Now I can set up computer #1 to play an infinite, obsessive
game of Tetris on computer #2, leaving me free at last to sit
down at computer #3 and get some work done. The $200 for
webcam and other hardware is cheap for an invention like this,
with the revolutionary potential of the wheel, or fire, or
even pizza delivery.

Thank you! Thank you! Thank you!

[ Reply to This ]
The New 4th law... (Score:5, Funny)
by gokubi (413425) on Tuesday January 28, @02:09PM (#5176135)
(http://www.gokubi.com/kinggeorge)

1. A robot may not injure a human being, or, through inaction,
allow a human being to come to harm.

2. A robot must obey the orders given it by human beings
except where such orders would conflict with the First Law.

3. A robot must protect its own existence as long as such
protection does not conflict with the First or Second Law.

4. A robot must never place the long skinny ones horizontally,
unless it leads to a long skinny vertical hole so 4 rows can
be cleared at once the next time a long skinny one comes
around.

[ Reply to This ]

    Re:The New 4th law... (Score:5, Funny)
    by GuyMannDude (574364) on Tuesday January 28,
    @02:14PM (#5176179)

    I thought Directive 4 was that any attempt to arrest a
    senior officer of OCP Corporation would result in
    immediate shutdown!

    GMD
    [ Reply to This | Parent ]
fullarb_hotmail_com_tetris_ed209.jpg
Sarjakuva innoitti minua Tetris A.I. hankkeen (2003) (ensimmäinen kerta, kun olen ikinä herätti comic!)
fullarb_hotmail_com_tetris_ed209_02.jpg
Sarjakuva innoitti minua Tetris A.I. hankkeen (2003) (toinen kerta, kun olen ikinä herätti comic!)

13. Historia, Tetris A.I. hanke

Kun keväällä 1989 olin kiireinen sivuutan (ja ei ole) toisen lukukauden freshman luokissa on University of Pennsylvania.
Yksi minun roommates, Bill Matthews, oli Mac Classic, ja joskus pelataan videopelejä.
Ihmiset jotka saavat otettu Ivy League koulut ovat yleensä taipuvaisia kilpailemaan muiden ihmisten kanssa kaiken aikaa - niin kun Bill koristeltu peli Tetris hänen Mac, olemme välittömästi aloittanut pitkän aikavälin taistelua korkeat pisteet.
Kuten tulokset nousivat, kun investointeja tarvitse tehdä pieni voitto on kasvanut dramaattisesti.
Jotta pitkän tarinan lyhyesti sanottuna Bill oletettavasti hallussaan korkean pistemäärän välillä meitä, mutta epäilen hänen käyttää ResEdit ja hakkerointi pisteitä kuva!
Bill oli luokan kanssa Wharton School of Businessissa, alma mater, Michael Milken ja Donald Trump, joten se ei ole käsittämätöntä, että joku takiloitu yksi impossibly high score ...
Kun kesällä 1990 I lainattu yksi 30 MHz Intel 80386 IBM PC minun roommate, Alex Haidas.
Olen ostanut Mac näppäimistö, joka Kirpputorilla $ 1.
I rakennettu rinnan sataman ohjauspiirit jotta PC valvoa Mac näppäimistö.
(Olen käyttänyt CMOS 4040 siru, joka toimii tyyppi kiinteiden-tilassa rele liittyä näppäimistö yhteystiedot sisällä Mac näppäimistöä.)
Kirjoitin tietokoneella ohjelma, joka käyttää päätöksen puu sen strategia pelaa peliä Tetris.  Tässä vain muutama viikko minulla oli PC pelaa Tetris peli käynnissä, Mac.
Olin kuitenkin velvollinen käyttämään PC näppäimistö kertoa A.I. noin kunkin kuuluvien pala-näytössä.
Olen alkanut työskennellä virtapiirin käyttäen CdS (Cadmium Sulfide) valon ilmaisimet, että vähärasvaisen vastaan Mac näytön ja "nähdä" kuuluvaa kappaletta, mutta CdS anturit reagoi liian hitaasti muutoksiin kirkkautta ja kontrastia välillä Tetris kappaletta ja tausta-Mac Classic näytön oli liian alhainen, jotta luotettavasti syrjintää.
Noihin aikoihin minulla ei ollut paljon rahaa, niin se oli liian riskialtista ostaa $ 2 Radio Shack phototransistor, että ei ehkä tee sitä, mitä halusin.
Lisäksi, kun otetaan huomioon kontrasti ongelma, olin pessimistinen koko lähestymistapaa.
Kun ostin ensimmäisen henkilökohtaisen tietokoneen vuonna 1996, en voinut saada ohjelmistoa Windows 95-100 MHz CPU tehdä videon käsittely tarpeeksi nopeasti tehdä yksinkertainen näkemys järjestelmän toimimaan.
Kirjoitin kuvan käsittelyä koodin assembly kielinen, mutta siellä oli niin paljon yleiskustannukset ennen minun koodi tosiasiallisesti saanut videon tietoja siitä, että se tuntui mahdottomalta tehdä mitään hyödyllistä.
Vuonna 2003, teknologian, erityisesti CPU nopeus oli saavuttanut tason, että tehtävä viimeistely hankkeen lähes triviaaleja.
I dug up my old henkilökohtainen projekti ja lopulta päättynyt, saamme jossain mielessä sulkemisesta.
Se oli hyvin jännittävää nähdä, yksi tietokone pelaa toisen tietokoneen kautta USB videokamera ja releet.
The Sound of tiedotuspisteille napsauttamalla, ja katselin palaset spin ja pudota milloin naurettavaa, superhuman nopeuksilla, antoi kokemusta hyvin täyttävä, moniaistiset tavalla.
Vuonna 2003 minun työni oli tunnustanut Slashdot (http://slashdot.org), ja olen saanut paljon hienoja palautetta.
Olin kutsunut näkyvän "Screen Savers"-televisio-ohjelma, TechTV digitaalinen televisioverkko.
Kävin San Franciscossa ja ilmaantuneet osoittavat, ja kokemus oli suuri.
Myöhemmin 2003, sain viestin Henk Rogers, kutsuneet minut Hawaii tavata hänet ja Alexey Pajitnov puhua perustamisesta jonkinlainen standardi Tetris varten ottaa Tetris turnauksissa.
Yksi erityisen kiinnostava oli, jonka avulla pelaajat käyttävät matkapuhelinta "kilpailla toistensa kanssa," epäsuorasti kautta A.I. että imitates pelaajat (ennen analyysiä kunkin pelaajan toimista), ja näin vältetään vaikutukset matkapuhelimen Internet latenssi, ja jonka avulla pelaajat voivat "kilpailla vastaan" * Hyvien ihmisten pelaajat saavat maailma (*..., tai pikemminkin A.I. jäljittely hyvin parhaiden ihmisten pelaajat saavat maailma).
Olin innoissani, että näköpiirissä kokouksessa luojan Tetris.  Valitettavasti alla purjehtivien saa minut innokkaasti, ja olen kieltäytyivät kutsusta.
Vuonna 2006, I muunnetaan minun "Standard Tetris" ohjelmistojen C++, C# tehdä ohjelmistoja helpommin ja hyödyllistä contemporary ohjelmoijia.
colinfahey.com
yhteystiedot
English  Español  Português  Français  Italiano  Deutsch  Nederlands  Svenska  Dansk  Suomi  Norsk  Русский  Polski  Română  Български  Hrvatski  Česky  中国  中國  日本語  한국어  Ελληνική  हिन्दी  العربية