Kojarzycie grę w pomidora? Zasady są proste – jedna osoba mówi cokolwiek, a druga odpowiada na to pomidor. Kto pierwszy zacznie się śmiać – przegrywa. 1)
Smutek Podlasia przeniósł tę grę na komputer. Poniżej wersje na różne platformy.
The pomidor game is a simple game of polish children. One person says anything, and the other answers pomidor (in polish it means tomato). Whatever is the question, answer is always the same: pomidor. Yes, the game is quite strange, but children do play it.
The Smutek Podlasia art group made several implementations of this game in different programming languages. If you want create some other implementation, contact us.
Gra w pomidora w wersji dla GNU/Linuksa, powłoka bash2):
$ echo "Gra w pomidora ver. 1.0"; while read; do echo "pomidor"; done
Gra w pomidora w wersji dla powłoki sh – powinno więc działać w każdym środowisku zgodnym z POSIX-1:
$ while read VAR; do echo "pomidor"; done
Gra w pomidora w wersji dla Windows XP. Plik pomidor.bat:
@echo off echo Gra w pomidora ver. 1.0 :tutaj set /p x= echo pomidor goto tutaj
Gra w pomidora w wersji HTML. Plik pomidor.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta content="text/html; charset=iso-8859-2" http-equiv="Content-Type"> <meta name="Author" content="good(k)night"> <title>gra w pomidora w HTML</title> <style TYPE="text/css"> <!-- p { color: #ff0000; padding-bottom: 2em } a img { border: 0 none; } --> </style> </head> <body> <form action=""> <p> Pomidor!<br> <input type="text"> <input type="submit" value="ok"> </p> <p> <a href="http://validator.w3.org/check?uri=referer"> <img src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!" height="31" width="88"> </a> </p> </form> </body> </html>
Gra w pomidora w wersji PHP. Plik pomidor.php:
<html> <head> <title>gra w pomidora w PHP</title> <meta name="author" content="Zerro"> <meta content="text/html; charset=iso-8859-2" http-equiv=Content-Type> </head> <body topmargin="10" leftmargin="10"> <? if (isset($_POST['kaloryfer'])) { echo("<p>\nPomidor!\n</p>\n\n"); $dialog=$_POST['dialog'] . "<br>\n" . "<font color=green>> " . \ $_POST['kaloryfer'] . "</font>" . \ "<br><font color=red> < Pomidor!</font><br>\n"; } else { echo("<p>\nZagrajmy w pomidora. Powiedz coś\n</p>\n\n"); $dialog=''; } ?> <form action="pomidor.php" method="POST"> <input type=text name="kaloryfer"> <input type=hidden name="dialog" value="<? echo $dialog ?>"> <input type=submit value="ok"> </form> <hr> <? echo($dialog); ?> </body> </html>
Skrypt w PHP uruchamiany z linii poleceń.
#!/usr/bin/php -q <?php do { echo "Pytanie: "; $line = trim(fgets(STDIN)); echo "Pomidor\n"; } while ($line!=''); ?>
Gra w pomidora w wersji pythonowej:
#!/usr/bin/python from sys import stdin print "Gra w pomidora ver. 1.0" while stdin.readline(): print "pomidor"
Gra w pomidora w wersji common-lispowej:
(format t "Gra w pomidora ver. 1.0~%") (do () (nil) (read-line) (format t "pomidor~%"))
Gra w pomidora w wersji C:
#include <stdio.h> int main() { printf("Gra w pomidora ver. 1.0\n"); while (1) { if ( getchar() == '\n') printf("pomidor\n"); } return 0; }
Gra w pomidora w wersji C++:
#include <iostream> #include <string> using namespace std; int main() { cout << "Gra w pomidora ver. 1.0" << endl; string x; while ( getline(cin, x) ) cout << "pomidor" << endl; return 0; }
Gra w pomidora jako moduł jądra dla linuksów z serii 2.6.
Gra składa się z dwu plików:
pomidor.c:
#include <linux/module.h> #include <linux/proc_fs.h> static int pomidor_write(struct file *file, const char *buffer, unsigned long count, void *data) { char buf[1024]; copy_from_user(buf, buffer, count); buf[count]=0; printk("[pomidor]: ty < %s", buf); printk("[pomidor]: ja > pomidor\n"); return count; } int init_module(void) { struct proc_dir_entry *proc_pomidor; printk("Modul pomidor zostal zaladowany.\n"); proc_pomidor = create_proc_entry("pomidor", 0, 0); proc_pomidor->write_proc = pomidor_write; return 0; } void cleanup_module(void) { remove_proc_entry("pomidor", 0); }
Makefile:
bj-m += pomidor.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Aby zagrać w grę, należy:
Aha, uwaga: o ile kojarzę, żeby skompilować ten moduł, musisz mieć w katalogu /usr/src/linux-wersja aktualne źródła jądra. Ale jeśli masz w zwyczaju sam kompilować sobie jajko, to pewnie ten warunek masz spełniony.
Zaczynamy od skompilowania i załadowania modułu:
Mówimy coś jądru – a jądro na to: pomidor!:
I zaczyna się pyszna zabawa...
Otwieramy edytor VBA (np w MS Excelu), wstawiamy nowy moduł w którym wpisujemy:
Sub pomidor()
Dim q As String
Const a As String = "pomidor"
Const tytul As String = "Gra w pomidora"
Do
q = InputBox("Pytanie?", tytul)
MsgBox ("Q: " & q & Chr(13) & Chr(10) & "A: " & a)
Loop
End Sub
Skrinszoty:
Gra w pomidora w wersji matematycznej:
dla każdego x, p(x)=pomidor
Gra w pomidora zaimplementowana sprzętowo.
Grę montujemy na płycie pilśniowej o rozmiarach 600×400 mm. W lewej jej części montujemy przełączniki p1-p4 oznaczone plakietkami z napisami:
W prawej części umieszczona jest żarówka ż1 przykryta płytką z matowego pleksi z czerwonym napisem pomidor.
Gracz wciska jeden z przycisków p1-p4, odpowiadający zadanemu pytaniu. W odpowiedzi automat zapala żaróweczkę, która podświetla udzieloną odpowiedź.
Gra w pomidora w wersji excelowej:
W D3 wpisujemy:
=JEŻELI(CZY.PUSTA(C3);"";"pomidor")
i kopujemy D3 na obszar D4:D10.
Gra w pomidora w wersji dla ekg2. W ekg2 wpisujemy polecenie:
/on -a protocol-message 1 %1!==gg:<twoj_nr_gg> /chat "%1" pomidor
Teraz ktokolwiek do nas nie napisze, dostanie w odpowiedzi pomidor.
Zamiast powyższej, można też wpisać komendę:
/on -a protocol-message 1 %1!==gg:<twoj_nr_gg> /^timer -a 2 /chat "%1" pomidor
Różnica jest taka, że odpowiedź pomidor będzie wysłana po dwóch sekundach od momentu otrzymania wiadomości, a nie od razu.
; reaguje na ctrl-c ; używa funkcji DOS .model small .386 .data intro byte "Gra w pomidora ver. 1.0",0ah,0dh,"$" odp byte 0ah,0dh,"pomidor",0ah,0dh,"$" .stack 100h .code .startup mov dx, offset intro ; intro mov ah, 09h int 21h poczatek: mov ah, 01h ; f-cja odczytu znaku z echem i ctrl-c int 21h cmp al, 0dh ; czy jest enter? jz koniec_wyp ; tak - odpowiedz jmp poczatek ; nie zczytujemy nastepny koniec_wyp: mov dx, offset odp ; odpowiedz mov ah, 09h int 21h jmp poczatek ; .exit end
;nie reaguje na ctrl-c ; używa f-cji DOS-a .model small .386 .data intro byte "Gra w pomidora ver. 1.0.1",0ah,0dh,"$" odp byte 0ah,0dh,"pomidor",0ah,0dh,"$" .stack 100h .code .startup mov dx, offset intro ; intro mov ah, 09h int 21h poczatek: mov ah, 07h ; f-cja odczytu znaku int 21h mov ah, 02h ; wyświetlanie mov dl, al int 21h cmp al, 0dh ; czy jest enter? jz koniec_wyp ; tak - odpowiedz jmp poczatek ; nie zczytujemy nastepny koniec_wyp: mov dx, offset odp ; odpowiedz mov ah, 09h int 21h jmp poczatek ; .exit end
function [] = pom()
%% function[] = pom()
%% Gra w pomidora ver. 1.0
input('Gra w pomidora ver. 1.0\n','s');
while 1
input('pomidor\n','s');
end
Gra w pomidora w wersji pascalowej:
PROGRAM Pomidor(INPUT,OUTPUT) VAR ch : CHAR; BEGIN WRITELN('Gra w pomidora ver. 1.0'); WHILE TRUE DO BEGIN WHILE NOT EOLN DO READ(ch); WRITELN; WRITELN('pomidor'); END END.
(21:32:19) filips mówi: co to C# ? (21:32:53) mikus mówi: taki jezyk, cudenko techniki (21:33:03) mikus mówi: taka poprawiona Java, firmowana przez Microsoft
using System; namespace pomidor { /// <summary> /// Klasa pomidora /// </summary> class Pomidor { private static string line; /// <summary> /// Aplikacja realizuje znaną grę /// </summary> [STAThread] static void Main(string[] args) { while (true) { System.Console.WriteLine("pomidor"); line = System.Console.ReadLine(); System.Console.WriteLine("pomidor"); } } } }
Gra w pomidora w javaskrypcie:
<html> <head><meta http-equiv="refresh" content="6"></head> <body> <script type="text/javascript"> pytanie=prompt("","") document.write("<font color=red>" + pytanie + "</font><br><font color=green>" + "pomidor</font>") </script> </body> </html>
TO POMIDOR (PR [Gra w pomidora ver. 1.0] REPEAT 65535 [RL PR[pomidor]]) END
! Gra w POMIDORA
PROGRAM pomidor
CHARACTER tekst*1000
print *,'Gra w pomidora, ver.1.0'
100 read *, tekst
print *,'pomidor'
GOTO 100
END
Gra w pomidora w wersji XSLT. Na wejsciu prosze podać dowolny XML z pytaniem.
<?xml version="1.0" encoding="utf-8"?> <xs:stylesheet version="1.0" xmlns:xs="http://www.w3.org/1999/XSL/Transform"> <xs:template match="*"> <odpowiedz>pomidor</odpowiedz> </xs:template> </xs:stylesheet>
Dokument wejściowy:
<?xml version="1.0" encoding="utf-8"?> <pytanie>Co dzis na obiad?</pytanie>
Wynik:
<?xml version="1.0" encoding="utf-8"?> <odpowiedz>pomidor</odpowiedz>
Wersja druga – XSLT dla większej liczby pytań:
<?xml version="1.0" encoding="utf-8"?> <xs:stylesheet version="1.0" xmlns:xs="http://www.w3.org/1999/XSL/Transform"> <xs:output encoding="utf-8" /> <xs:template match="/*"> <odpowiedzi> <xs:apply-templates /> </odpowiedzi> </xs:template> <xs:template match="*"> <odpowiedz>pomidor</odpowiedz> </xs:template> </xs:stylesheet>
Dokument wejściowy:
<?xml version="1.0" encoding="utf-8"?> <pytania> <pytanie>Gdzie jestes?</pytanie> <pytanie>Jak sie nazywasz?</pytanie> <pytanie>O co chodzi?</pytanie> </pytania>
Wynik:
<?xml version="1.0" encoding="utf-8"?> <odpowiedzi> <odpowiedz>pomidor</odpowiedz> <odpowiedz>pomidor</odpowiedz> <odpowiedz>pomidor</odpowiedz> </odpowiedzi>
program Pomidor;
uses
Dialogs;
begin
repeat
InputBox('Pytanie', 'Podaj pytanie:', '');
ShowMessage('Pomidor');
until False;
end.
% implementacja w GNU-prologu:
% /Dreamer_
get_line :- ( get_char('\n') ; get_line ).
play :-
get_line,
write('pomidor!'), nl,
play.
pomidor :-
write('Gra w pomidora ver. 1.0'), nl,
play.
Niech program będzie zapisany w pliku pom.pl. Po uruchomieniu GNU-prologa wpisujemy:
| ?- [pom]. | ?- pomidor.
import IO
pomidor = do
putStrLn "Gra w pomidora ver. 1.0"
play where
play = do
getLine
putStrLn "pomidor!"
play
ruby -n -e 'print "pomidor\n"'
let _ =
while true do
let _ = read_line () in
let _ = print_string "pomidor\n" in
()
done
+[[,----------]>+++++++++++[<++++++++++>-]<++.-.--.----.-----.+++++++++++. +++.[-]++++++++++.]
Z Wikipedii: Largely the creation of Richard Merrill, FOCAL was initially written for and had its largest impact on the Digital Equipment Corporation’s (DEC’s) PDP-8 computers. Merrill wrote the original (1968) and classic FOCAL-69 interpreters for the PDP-8. Digital itself described FOCAL as “a JOSS-like language.”
Like early versions of BASIC, FOCAL was a complete programming environment in itself, requiring no operating system. As in MUMPS, most commands could be, and in practice were, abbreviated to a single letter of the alphabet. Creative choices of words were used to make each command uniquely defined by its leading character. Digital made available several European-language versions in which the command words were translated into the target language.
Więcej: http://en.wikipedia.org/wiki/FOCAL_programming_language
make. Otrzymujemy plik wykonywalny focalpomidor.foc:01.10 ASK "PYTANIE", PYT 01.20 TYPE "POMIDOR!",! 02.10 GOTO 01.10
focallib call pomidor.focgo— [Filip Stefaniak] 2006-09-07 16:40
1 INPUT text$ 2 PRINT "POMIDOR" 3 GOTO 1 4 END
10 REM kod należy przepisać i ewentualnie nagrać na kasetę w Atari/Commodore itd 20 print pomidor ver 1.0 30 input $a 40 print pomidor 50 goto 30
Do uruchomienia gry potrzebne są: Sound eXchange (sox), bash, działające urządzenie /dev/dsp z uprawnieniami do zapisu i odczytu, mikrofon oraz słuchawka.
1. Podłączamy mikrofon oraz słuchawkę do odpowiednich złącz w karcie dźwiękowej.
2. W mikserze karty dzwiekowej ustawiamy przechwytywanie dźwięku z mikrofonu oraz regulujemy poziom zapisu.
3. Tworzymy plik dżwiękowy o nazwie “pomidor”.
$ rec -c 1 -f u -r 8000 -s b -t raw pomidor
następnie mówimy do mikrofonu “pomidor” i kończymy nagrywanie wciskając [CTRL]+[C]
4. Startujemy grę:
while true; clear; do rec -r 8000 -t raw /dev/null silence 1 1 20% 30 100 5% > /dev/null; echo -e " V\n x.|.x\n #. .#\n{# #}\n #. .#\n x.'.x"; cat pomidor > /dev/dsp; done
Uwaga: pierwsze trzy parametry po silence opisują parametry odblokowania bramki szumowej, a kolejne trzy odpowiadają za opoznienie i poziom dźwięku, przy którym bramka się zamyka. Nalezy je ekseperymentalnie dobrac do poziomu zapisu dźwięku w karcie dźwiękowej. Więcej informacji w manualu sox.
5. Mówimy do mikrofonu, a komputer odpowiada nam na wyszstkie Ostateczne Pytania o Życie, Wszechświat i całą resztę.
echo "Gra w pomidora, wersja 1.0 dla AmigaDOS/MorphOS Shell." lab start echo noline "> " set >nil: temp ? echo "pomidor" skip start back
nadesłał Marek Szyprowski
/* * Main.java * @author SOCAR http://www.socar.xt.pl * */ package pomidor; import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public Main() {} /** * @param args the command line arguments */ public static void main(String[] args) { boolean goaway=false; try{ while(!goaway) { new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println("Pomidor"); } }catch(Exception e){System.out.println("Nie mam pojecia co zrobiles zle :/");}; } }
Przewidując konieczność internacjonalizacji gry w pomidora uważam, że należy stworzyć listę słowa pomidor w różnych językach: