Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,2 @@
---
from: http://rosettacode.org/wiki/Magic_8-ball

View file

@ -0,0 +1,10 @@
;Task:
Create Magic 8-Ball.
See details at:   [https://en.wikipedia.org/wiki/Magic_8-Ball Magic 8-Ball].
{{Template:strings}}
<br><br>

View file

@ -0,0 +1,21 @@
V s = [It is certain, It is decidedly so, Without a doubt, Yes, definitely,
You may rely on it, As I see it, yes, Most likely, Outlook good,
Signs point to yes, Yes, Reply hazy, try again, Ask again later,
Better not tell you now, Cannot predict now, Concentrate and ask again,
Don't bet on it, My reply is no, My sources say no, Outlook not so good,
Very doubtful]
Set[String] qs
L
V question = input(Ask your question:)
I question.empty
L.break
V answer = random:choice(s)
I question C qs
print(Your question has already been answered)
E
qs.add(question)
print(answer)

View file

@ -0,0 +1,83 @@
bdos: equ 5 ; CP/M calls
puts: equ 9
gets: equ 10
org 100h
lxi d,message ; Print message
mvi c,puts
call bdos
question: lxi d,prompt ; Ask for question
mvi c,puts
call bdos
lxi d,bufdef ; Read answer
mvi c,gets
call bdos
lxi d,newline ; Print newline
mvi c,puts
call bdos
lxi h,buf ; XOR the question w/ the RNG state
mvi b,20
xorouter: lxi d,xabcdat + 1
mvi c,3
xorinner: ldax d
xra m
stax d
inx d
inx h
dcr c
jnz xorinner
dcr b
jnz xorouter
getrnd: call xabcrand ; Generate random number <20
ani 1fh
cpi 20
jnc getrnd
inr a
mov b,a ; That is the number of the message
lxi h,responses ; Skip that many strings
mvi a,'$'
skipstring: cmp m
inx h
jnz skipstring
dcr b
jnz skipstring
xchg ; Print the chosen string
mvi c,puts
call bdos
jmp question ; Get another question
;; RNG to make it a little less predictable
xabcrand: lxi h,xabcdat
inr m ; X++
mov a,m ; X,
inx h ;
xra m ; ^ C,
inx h ;
xra m ; ^ A,
mov m,a ; -> A
inx h
add m ; + B,
mov m,a ; -> B
rar ; >>1
dcx h
xra m ; ^ A,
dcx h
add m ; + C
mov m,a ; -> C
ret
;; Strings
message: db 'Magic 8 Ball$'
newline: db 13,10,'$'
prompt: db 13,10,13,10,'What is your question? '
;; The possible responses
responses: db '$It is certain$It is decidedly so$Without a doubt$'
db 'Yes, definitely$You may rely on it$As I see it, yes$'
db 'Most likely$Outlook good$Signs point to yes$Yes$'
db 'Reply hazy, try again$Ask again later$'
db 'Better not tell you now$Cannot predict now$'
db 'Concentrate and ask again$Don',39,'t bet on it$'
db 'My reply is no$My sources say no$Outlook not so good$'
db 'Very doubtful$'
;; Variables
bufdef: db 60,0 ; 60 = 20*3
buf: equ $ ; question will be XOR'ed with the RNG state
xabcdat: equ buf + 60 ; Point RNG data into uninitialized memory,
; to make it more exciting.

View file

@ -0,0 +1,78 @@
.model small
.stack 1024
.data
UserRam BYTE 256 DUP(0)
xorshift32_state_lo equ UserRam
xorshift32_state_hi equ UserRam+2
Ans0 byte "It is certain.",0
Ans1 byte "It is decidedly so.",0
Ans2 byte "Signs point to yes.",0
Ans3 byte "You can rely on it.",0
Ans4 byte "Most likely.",0
Ans5 byte "Cannot predict now.",0
Ans6 byte "Reply hazy, try again.",0
Ans7 byte "Outlook not so good.",0
Ans8 byte "My sources say no.",0
Ans9 byte "Very doubtful.",0
AnsA byte "Without a doubt.",0
AnsB byte "Outlook good.",0
AnsC byte "Ask again later.",0
AnsD byte "Better not tell you now.",0
AnsE byte "Don't count on it.",0
AnsF byte "Yes.",0
AnswerLookup word Ans0,Ans1,Ans2,Ans3,Ans4,Ans5,Ans6,Ans7
word Ans8,Ans9,AnsA,AnsB,AnsC,AnsD,AnsE,AnsF
.code
start:
mov ax,@data
mov ds,ax
mov ax,@code
mov es,ax
CLD ;have LODSB,MOVSB,STOSB,etc. auto-increment
mov ax,03h
int 10h ;sets video mode to MS-DOS text mode. Which the program is already in, so this just clears the screen.
mov ah,2Ch
int 21h ;returns hour:minute in cx, second:100ths of second in dx
mov word ptr [ds:xorshift32_state_lo],dx
mov word ptr [ds:xorshift32_state_hi],cx
call doXorshift32 ;uses the above memory locations as input. Do it three times just to mix it up some more
call doXorshift32
call doXorshift32
mov ax,word ptr[ds:xorshift32_state_lo] ;get the random output from the RNG
and al,0Fh
;keep only the bottom nibble of al, there are only 16 possible messages.
mov bx,offset AnswerLookup
call XLATW
;translates AX using a table of words as a lookup table.
mov si,ax ;use this looked-up value as the source index for our text.
call PrintString ;print to the screen
mov ax,4C00h
int 21h ;return to DOS
XLATW:
;input: ds:bx = the table you wish to look up
;AL= the raw index into this table as if it were byte data.
;So don't left shift prior to calling this.
;AH is destroyed.
SHL AL,1
mov ah,al ;copy AL to AH
XLAT ;returns low byte in al
inc ah
xchg al,ah ;XLAT only works with AL
XLAT ;returns high byte in al (old ah)
xchg al,ah
;now the word is loaded into ax, big-endian.
ret

View file

@ -0,0 +1,15 @@
BEGIN
[]STRING answers = ("It is certain.", "It is decidedly so.",
"Without a doubt.", "Yes - definitely.", "You may rely on it.",
"As I see it, yes.", "Most likely.", "Outlook good.",
"Yes.", "Signs point to yes.", "Reply hazy, try again.",
"Ask again later.", "Better not tell you now.", "Cannot predict now.",
"Concentrate and ask again.", "Don't count on it.", "My reply is no.",
"My sources say no.", "Outlook not so good.", "Very doubtful.");
DO
REF STRING question := LOC STRING;
print("Your question: ");
read((question, new line));
print((answers[ENTIER (random * UPB answers) + 1], new line))
OD
END

View file

@ -0,0 +1,35 @@
# syntax: GAWK -f MAGIC_8-BALL.AWK
BEGIN {
# Ten answers are affirmative, five are non-committal, and five are negative.
arr[++i] = "It is certain"
arr[++i] = "It is decidedly so"
arr[++i] = "Without a doubt"
arr[++i] = "Yes, definitely"
arr[++i] = "You may rely on it"
arr[++i] = "As I see it, yes"
arr[++i] = "Most likely"
arr[++i] = "Outlook good"
arr[++i] = "Signs point to yes"
arr[++i] = "Yes"
arr[++i] = "Reply hazy, try again"
arr[++i] = "Ask again later"
arr[++i] = "Better not tell you now"
arr[++i] = "Cannot predict now"
arr[++i] = "Concentrate and ask again"
arr[++i] = "Don't bet on it"
arr[++i] = "My reply is no"
arr[++i] = "My sources say no"
arr[++i] = "Outlook not so good"
arr[++i] = "Very doubtful"
srand()
printf("Please enter your question or a blank line to quit.\n")
while (1) {
printf("\n? ")
getline ans
if (ans ~ /^ *$/) {
break
}
printf("%s\n",arr[int(rand()*i)+1])
}
exit(0)
}

View file

@ -0,0 +1,39 @@
PROC Main()
DEFINE PTR="CARD"
DEFINE COUNT="20"
CHAR ARRAY s(256)
PTR ARRAY a(COUNT)
BYTE i
a(0)="It is certain."
a(1)="It is decidedly so."
a(2)="Without a doubt."
a(3)="Yes - definitely."
a(4)="You may rely on it."
a(5)="As I see it, yes."
a(6)="Most likely."
a(7)="Outlook good."
a(8)="Yes."
a(9)="Signs point to yes."
a(10)="Reply hazy, try again."
a(11)="Ask again later."
a(12)="Better not tell you now."
a(13)="Cannot predict now."
a(14)="Concentrate and ask again."
a(15)="Don't count on it."
a(16)="My reply is no."
a(17)="My sources say no."
a(18)="Outlook not so good."
a(19)="Very doubtful."
DO
PrintE("Enter your question or blank to exit:")
InputS(s)
IF s(0)=0 THEN
EXIT
FI
i=Rand(COUNT)
PrintE(a(i))
PutE()
OD
RETURN

View file

@ -0,0 +1,53 @@
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings; use Ada.Strings;
with Ada.Numerics.Discrete_Random;
procedure Main is
--Creation of type with all the possible answers
--
type Possible_Answers_Type is (It_Is_Certain, It_Is_Decidedly_So, Without_A_Doubt,
Yes_Definitely, You_May_Rely_On_It, As_I_See_It, Yes_Most_Likely,
Outlook_Good, Signs_Point_To_Yes, Yes_Reply_Hazy,
Try_Again, Ask_Again_Later, Better_Not_Tell_You_Now,
Cannot_Predict_Now, Concentrate_And_Ask_Again,
Dont_Bet_On_It, My_Reply_Is_No, My_Sources_Say_No,
Outlook_Not_So_Good, Very_Doubtful);
---------------------------------------------------------------------
-- Variable declaration
Answer : Possible_Answers_Type := Possible_Answers_Type'First;
User_Question : String := " ";
-----------------------------------------------------------------------------
--Randomizer
--
package Random_Answer is new Ada.Numerics.Discrete_Random (Possible_Answers_Type);
use Random_Answer;
G : Generator;
begin
Reset (G); -- Starts the generator in a unique state in each run
--User get provides question
Put_Line ("Welcome."); New_Line;
Put_Line ("WARNING!!! Please remember that there's no need to shake your device for this program to work, and shaking your device could damage it");
New_Line;
Put_Line ("What's your question? ");
Get (Item => User_Question); New_Line;
--Output Answer
Answer := (Random (G)); --Assigns random answer to variable Answer
Put (Answer'Image); --Prints Answer
end Main;

View file

@ -0,0 +1,3 @@
set the answers to {"It is certain", "It is decidedly so", "Without a doubt", "Yes, definitely", "You may rely on it", "As I see it, yes", "Most likely", "Outlook good", "Signs point to yes", "Yes", "Reply hazy, try again", "Ask again later", "Better not tell you now", "Cannot predict now", "Concentrate and ask again", "Don't bet on it", "My reply is no", "My sources say no", "Outlook not so good", "Very doubtful"}
display dialog some item of the answers

View file

@ -0,0 +1,4 @@
0 DIM F$(19): FOR I = 0 TO 19: READ F$(I): NEXT :M$ = CHR$ (13): DEF FN U(K) = K - 32 * (K > 95): FOR Q = 0 TO 1: HOME : PRINT M$" PRESS ANY KEY TO REVEAL YOUR FORTUNE."M$M$" PRESS Q TO QUIT."M$M$" ";:FO = INT ( RND (1) * 20): GET K$
1 K$ = CHR$ ( FN U( ASC (K$))):Q = K$ = "Q": IF NOT Q THEN HOME : PRINT M$" YOUR FORTUNE READS:"M$M$ SPC( 5);F$(FO)M$M$" AGAIN? (Y/N) ";: GET K$:K$ = CHR$ ( FN U( ASC (K$))):Q = K$ < > "Y"
2 NEXT Q: DATA "IT IS CERTAIN.","IT IS DECIDEDLY SO.","WITHOUT A DOUBT.","YES DEFINITELY.","YOU MAY RELY ON IT.","AS I SEE IT, YES.","MOST LIKELY.","OUTLOOK GOOD.","YES.","SIGNS POINT TO YES."
3 DATA "REPLY HAZY, TRY AGAIN.","ASK AGAIN LATER.","BETTER NOT TELL YOU NOW.","CANNOT PREDICT NOW.","CONCENTRATE AND ASK AGAIN.","DON'T COUNT ON IT.","MY REPLY IS NO.","MY SOURCES SAY NO.","OUTLOOK NOT SO GOOD.","VERY DOUBTFUL."

View file

@ -0,0 +1,15 @@
answers: [
"It is certain" "It is decidedly so" "Without a doubt"
"Yes, definitely" "You may rely on it" "As I see it, yes"
"Most likely" "Outlook good" "Signs point to yes" "Yes"
"Reply hazy, try again" "Ask again later"
"Better not tell you now" "Cannot predict now"
"Concentrate and ask again" "Don't bet on it"
"My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful"
]
while ø [
input "Ask a question: "
print sample answers
]

View file

@ -0,0 +1,17 @@
answers := [
(join
"It is certain", "It is decidedly so", "Without a doubt","Yes, definitely",
"You may rely on it", "As I see it, yes","Most likely", "Outlook good",
"Signs point to yes", "Yes","Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now","Concentrate and ask again",
"Don't bet on it","My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"
)]
Ask:
InputBox, Question, Magic 8-Ball, Please ask your question or a blank line to quit.,,, 130
Random, rnd, 1, 20
if !question
ExitApp
MsgBox % answers[rnd]
gosub, Ask
return

View file

@ -0,0 +1,30 @@
dim answer$(20)
answer$[0] = "It is certain."
answer$[1] = "It is decidedly so."
answer$[2] = "Without a doubt."
answer$[3] = "Yes - definitely."
answer$[4] = "You may rely on it."
answer$[5] = "As I see it, yes."
answer$[6] = "Most likely."
answer$[7] = "Outlook good."
answer$[8] = "Yes."
answer$[9] = "Signs point to yes."
answer$[10] = "Reply hazy, try again."
answer$[11] = "Ask again later."
answer$[12] = "Better not tell you now."
answer$[13] = "Cannot predict now."
answer$[14] = "Concentrate and ask again."
answer$[15] = "Don't count on it."
answer$[16] = "My reply is no."
answer$[17] = "My sources say no."
answer$[18] = "Outlook not so good."
answer$[19] = "Very doubtful."
print "Q to quit."
while True
input string "What would you like to know? ", question$
if upper(question$) = "Q" then exit while
print answer$[int(rand * answer$[?])]
print
end while
end

View file

@ -0,0 +1,44 @@
#include <array>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
int main()
{
constexpr std::array<const char*, 20> answers = {
"It is certain.",
"It is decidedly so.",
"Without a doubt.",
"Yes - definitely.",
"You may rely on it.",
"As I see it, yes.",
"Most likely.",
"Outlook good.",
"Yes.",
"Signs point to yes.",
"Reply hazy, try again.",
"Ask again later.",
"Better not tell you now.",
"Cannot predict now.",
"Concentrate and ask again.",
"Don't count on it.",
"My reply is no.",
"My sources say no.",
"Outlook not so good.",
"Very doubtful."
};
std::string input;
std::srand(std::time(nullptr));
while (true) {
std::cout << "\n? : ";
std::getline(std::cin, input);
if (input.empty()) {
break;
}
std::cout << answers[std::rand() % answers.size()] << '\n';
}
}

View file

@ -0,0 +1,48 @@
using System;
namespace newProg
{
class Program
{
static void Main(string[] args)
{
string[] answers =
{
"It is certain.",
"It is decidedly so.",
"Without a doubt.",
"Yes definitely.",
"You may rely on it.",
"As I see it, yes.",
"Most likely.",
"Outlook good.",
"Yes.",
"Signs point to yes.",
"Reply hazy, try again.",
"Ask again later",
"Better not tell you now.",
"Cannot predict now.",
"Concentrate and ask again.",
"Don't count on it.",
"My reply is no.",
"My sources say no.",
"Outlook not so good.",
"Very doubtful."
};
while (true)
{
Random rnd = new Random();
int result = rnd.Next(0, 19);
Console.WriteLine("Magic 8 Ball! Ask question and hit a key for the answer!");
string inp = Console.ReadLine();
Console.WriteLine(answers[result]);
}
}
}
}

View file

@ -0,0 +1,29 @@
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
char *question = NULL;
size_t len = 0;
ssize_t read;
const char* answers[20] = {
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"
};
srand(time(NULL));
printf("Please enter your question or a blank line to quit.\n");
while (1) {
printf("\n? : ");
read = getline(&question, &len, stdin);
if (read < 2) break;
printf("\n%s\n", answers[rand() % 20]);
}
if (question) free(question);
return 0;
}

View file

@ -0,0 +1,47 @@
#!/var/cfengine/bin/cf-agent --no-lock
bundle agent __main__
{
methods: "rosettacode_org:magic_8_ball";
}
body file control
{
namespace => "rosettacode_org";
}
bundle agent magic_8_ball
{
vars:
"_responses"
slist => {
"It is certain", "It is decidedly so", "Without a doubt",
"Yes definitely", "You may rely on it", "As I see it yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful",
};
"_selected_response"
int => randomint( 0, length( _responses) ),
unless => isvariable( "$(this.namespace):$(this.promiser)" );
"_consideration_time"
int => randomint( 3, 5),
unless => isvariable( "$(this.namespace):$(this.promiser)" );
commands:
"/bin/sleep $(_consideration_time)"
inform => "false",
handle => "consider",
depends_on => { "think" },
comment => "This magic 8 ball takes a few seconds to consider the answer
after you bring your question to mind.";
reports:
"Think about your question ..."
handle => "think";
"Response: $(with)"
with => nth( _responses, $(_selected_response) ),
depends_on => { "consider" };
}

View file

@ -0,0 +1,38 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.6)
PROJECT(EightBall)
SET(CMAKE_DISABLE_SOURCE_CHANGES ON)
SET(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
LIST(APPEND RESPONSES "It is certain." "It is decidedly so." "Without a doubt.")
LIST(APPEND RESPONSES "Yes - definitely." "You may rely on it.")
LIST(APPEND RESPONSES "As I see it yes." "Most likely." "Outlook good.")
LIST(APPEND RESPONSES "Yes." "Signs point to yes." "Reply hazy try again.")
LIST(APPEND RESPONSES "Ask again later." "Better not tell you now.")
LIST(APPEND RESPONSES "Cannot predict now." "Concentrate and ask again.")
LIST(APPEND RESPONSES "Don't count on it." "My reply is no.")
LIST(APPEND RESPONSES "My sources say no." "Outlook not so good." "Very doubtful.")
FUNCTION(RANDOM_RESPONSE)
STRING(RANDOM LENGTH 1 ALPHABET 01 TENS)
STRING(RANDOM LENGTH 1 ALPHABET 0123456789 UNITS)
MATH(EXPR INDEX "${TENS}${UNITS}")
LIST(GET RESPONSES ${INDEX} RESPONSE)
MESSAGE(STATUS "Question: ${QUESTION}")
MESSAGE(STATUS "Response: ${RESPONSE}")
ENDFUNCTION(RANDOM_RESPONSE)
OPTION(QUESTION "User's input question" "")
MESSAGE("===================== 8 Ball =====================")
IF(NOT QUESTION)
MESSAGE(STATUS "Welcome to 8 ball! Please provide a question ")
MESSAGE(STATUS "using the flag -DQUESTION=\"my question\"")
ELSE()
RANDOM_RESPONSE()
ENDIF()
MESSAGE("==================================================")
ADD_CUSTOM_TARGET(${PROJECT_NAME} ALL)

View file

@ -0,0 +1,19 @@
100 cls
110 data "It is certain.","It is decidedly so."
120 data "Without a doubt.","Yes - definitely."
130 data "You may rely on it.","As I see it, yes."
140 data "Most likely.","Outlook good."
150 data "Yes.","Signs point to yes."
160 data "Reply hazy, try again.","Ask again later."
170 data "Better not tell you now.","Cannot predict now."
180 data "Concentrate and ask again.","Don't count on it."
190 data "My reply is no.","My sources say no."
200 data "Outlook not so good.","Very doubtful."
210 dim m8ball$(20)
220 for i = 0 to 19
230 read m8ball$(i)
240 next i
250 randomize timer
260 input "What would you like to know? ",q$
270 print m8ball$(int(rnd(20)))
280 end

View file

@ -0,0 +1,14 @@
(def responses
["It is certain" "It is decidedly so" "Without a doubt"
"Yes, definitely" "You may rely on it" "As I see it, yes"
"Most likely" "Outlook good" "Signs point to yes" "Yes"
"Reply hazy, try again" "Ask again later"
"Better not tell you now" "Cannot predict now"
"Concentrate and ask again" "Don't bet on it"
"My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful"])
(do
(println "Ask a question. ")
(read-line)
(println (rand-nth responses)))

View file

@ -0,0 +1,22 @@
10 dim f$(19):for i=0 to 19:read f$(i):next
20 print chr$(147);chr$(14)
30 print "Press any key to reveal your fortune."
40 print:print "Press Q to quit.":print
50 fo=int(rnd(1)*20):get k$:if k$="" then 50
60 if k$="q" then print "Good luck!":end
70 print "Your fortune reads:"
80 print spc(5);f$(fo):print
90 print "Again? (Y/N)"
100 get k$:if k$="" then 100
110 if k$="y" then goto 20
120 end
1000 data "It is certain.","It is decidedly so."
1010 data "Without a doubt.","Yes definitely."
1020 data "You may rely on it.","As I see it, yes."
1030 data "Most likely.","Outlook good.","Yes."
1040 data "Signs point to yes.","Reply hazy, try again."
1050 data "Ask again later.","Better not tell you now."
1060 data "Cannot predict now.","Concentrate and ask again."
1070 data "Don't count on it.","My reply is no."
1080 data "My sources say no.","Outlook not so good."
1090 data "Very doubtful."

View file

@ -0,0 +1,164 @@
title "Magic 8 Ball"
resize 0, 0, 340, 150
center
bgcolor 0, 0, 255
cls graphics
formid 1
formtext "Think of a question and select the magic button."
staticform 10, 10, 310, 20
bgcolor 0, 0, 0
fgcolor 255, 0, 255
colorform
formid 2
formtext "Magic Button"
buttonform 115, 50, 100, 20
bgcolor 255, 0, 0
fgcolor 0, 0, 255
colorform
do
if forms = 2 then
gosub magicbutton
endif
button k, 27
wait
loop k = 0
end
sub magicbutton
let r = int(rnd * 20) + 1
if r = 1 then
alert "It is certain."
endif
if r = 2 then
alert "It is decidedly so."
endif
if r = 3 then
alert "Without a doubt."
endif
if r = 4 then
alert "Yes definitely."
endif
if r = 5 then
alert "You may rely on it."
endif
if r = 6 then
alert "As I see it", comma, " yes."
endif
if r = 7 then
alert "Most likely."
endif
if r = 8 then
alert "Outlook good."
endif
if r = 9 then
alert "Yes."
endif
if r = 10 then
alert "Signs point to yes."
endif
if r = 11 then
alert "Reply hazy", comma, " try again."
endif
if r = 12 then
alert "Ask again later."
endif
if r = 13 then
alert "Better not tell you now."
endif
if r = 14 then
alert "Cannot predict now."
endif
if r = 15 then
alert "Concentrate and ask again."
endif
if r = 16 then
alert "Don't count on it."
endif
if r = 17 then
alert "My reply is no."
endif
if r = 18 then
alert "My sources say no."
endif
if r = 19 then
alert "Outlook not so good."
endif
if r = 20 then
alert "Very doubtful."
endif
return

View file

@ -0,0 +1,35 @@
import std.random, std.stdio, std.string;
const string[] responses = ["It is certain", "It is decidedly so",
"Without a doubt", "Yes, definitely",
"You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes",
"Yes", "Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no",
"Outlook not so good", "Very doubtful"];
void main()
{
string question = "";
auto rnd = Random(unpredictableSeed);
int index = -1;
writeln("Welcome to 8 ball! Please enter your question to ");
write("find the answers you seek.");
write("Type 'quit' to exit.", "\n\n");
while(true)
{
write("Question: ");
question = stdin.readln();
if(strip(question) == "quit")
{
break;
}
write("Response: ");
index = uniform(0, 20, rnd);
write(responses[index], "\n\n");
}
}

View file

@ -0,0 +1,51 @@
program Magic_8_ball;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
windows;
// https://stackoverflow.com/questions/29794559/delphi-console-xe7-clearscreen
procedure ClearScreen;
var
stdout: THandle;
csbi: TConsoleScreenBufferInfo;
ConsoleSize: DWORD;
NumWritten: DWORD;
Origin: TCoord;
begin
stdout := GetStdHandle(STD_OUTPUT_HANDLE);
Win32Check(stdout <> INVALID_HANDLE_VALUE);
Win32Check(GetConsoleScreenBufferInfo(stdout, csbi));
ConsoleSize := csbi.dwSize.X * csbi.dwSize.Y;
Origin.X := 0;
Origin.Y := 0;
Win32Check(FillConsoleOutputCharacter(stdout, ' ', ConsoleSize, Origin, NumWritten));
Win32Check(FillConsoleOutputAttribute(stdout, csbi.wAttributes, ConsoleSize,
Origin, NumWritten));
Win32Check(SetConsoleCursorPosition(stdout, Origin));
end;
const
answers: array[0..19] of string = ('It is certain.', 'It is decidedly so.',
'Without a doubt.', 'Yes definitely.', 'You may rely on it.',
'As I see it, yes.', 'Most likely.', 'Outlook good.', 'Yes.',
'Signs point to yes.', 'Reply hazy, try again.', 'Ask again later',
'Better not tell you now.', 'Cannot predict now.',
'Concentrate and ask again.', 'Don''t count on it.', 'My reply is no.',
'My sources say no.', 'Outlook not so good.', 'Very doubtful.');
begin
Randomize;
while True do
begin
writeln('Magic 8 Ball! Ask question and hit ENTER key for the answer!');
readln;
ClearScreen;
writeln(answers[Random(length(answers))], #10#10#10);
writeln('(Hit ENTER key to ask again)');
readln;
ClearScreen;
end;
end.

View file

@ -0,0 +1,18 @@
USING: io kernel random sequences ;
IN: rosetta-code.magic-8-ball
CONSTANT: phrases {
"It is certain" "It is decidedly so" "Without a doubt"
"Yes, definitely" "You may rely on it" "As I see it, yes"
"Most likely" "Outlook good" "Signs point to yes" "Yes"
"Reply hazy, try again" "Ask again later"
"Better not tell you now" "Cannot predict now"
"Concentrate and ask again" "Don't bet on it"
"My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful"
}
"Please enter your question or a blank line to quit." print
[ "? : " write flush readln empty? [ f ]
[ phrases random print t ] if ] loop

View file

@ -0,0 +1,36 @@
\ magic eight ball Rosetta Code
INCLUDE RANDOM.FS
DECIMAL
: CASE: ( -- -7) CREATE ;
: ;CASE ( n -- ) DOES> SWAP CELLS + @ EXECUTE ;
: VECTORS 0 DO , LOOP ;
:NONAME ." It is certain" ;
:NONAME ." It is decidedly so" ;
:NONAME ." Without a doubt" ;
:NONAME ." Yes, definitely" ;
:NONAME ." You may rely on it" ;
:NONAME ." As I see it, yes." ;
:NONAME ." Most likely" ;
:NONAME ." Outlook good" ;
:NONAME ." Signs point to yes." ;
:NONAME ." Yes." ;
:NONAME ." Reply hazy, try again" ;
:NONAME ." Ask again later" ;
:NONAME ." Better not tell you now" ;
:NONAME ." Cannot predict now" ;
:NONAME ." Concentrate and ask again" ;
:NONAME ." Don't bet on it" ;
:NONAME ." My reply is no" ;
:NONAME ." My sources say no" ;
:NONAME ." Outlook not so good" ;
:NONAME ." Very doubtful" ;
CASE: MAGIC8BALL 20 VECTORS ;CASE
: GO
CR ." Please enter your question or a blank line to quit."
BEGIN CR ." ? :" PAD 80 ACCEPT 0>
WHILE CR 19 RANDOM MAGIC8BALL CR
REPEAT ;

View file

@ -0,0 +1,42 @@
PROGRAM EIGHT_BALL
CHARACTER(LEN=100) :: RESPONSE
CHARACTER(LEN=100) :: QUESTION
CHARACTER(LEN=100), DIMENSION(20) :: RESPONSES
REAL :: R
CALL RANDOM_SEED()
RESPONSES(1) = "It is certain"
RESPONSES(2) = "It is decidedly so"
RESPONSES(3) = "Without a doubt"
RESPONSES(4) = "Yes, definitely"
RESPONSES(5) = "You may rely on it"
RESPONSES(6) = "As I see it, yes"
RESPONSES(7) = "Most likely"
RESPONSES(8) = "Outlook good"
RESPONSES(9) = "Signs point to yes"
RESPONSES(10) = "Yes"
RESPONSES(11) = "Reply hazy, try again"
RESPONSES(12) = "Ask again later"
RESPONSES(13) = "Better not tell you now"
RESPONSES(14) = "Cannot predict now"
RESPONSES(15) = "Concentrate and ask again"
RESPONSES(16) = "Don't bet on it"
RESPONSES(17) = "My reply is no"
RESPONSES(18) = "My sources say no"
RESPONSES(19) = "Outlook not so good"
RESPONSES(20) = "Very doubtful"
WRITE(*,*) "Welcome to 8 Ball! Ask a question to find the answers"
WRITE(*,*) "you seek, type either 'quit' or 'q' to exit", NEW_LINE('A')
DO WHILE(.TRUE.)
PRINT*, "Ask your question: "
READ(*,*) QUESTION
IF(QUESTION == "q" .OR. QUESTION == "quit") THEN
CALL EXIT(0)
ENDIF
CALL RANDOM_NUMBER(R)
PRINT*, "Response: ", TRIM(RESPONSES(FLOOR(R*20))), NEW_LINE('A')
ENDDO
END PROGRAM EIGHT_BALL

View file

@ -0,0 +1,24 @@
program Magic_8_ball;
{$IFDEF WINDOWS}{$APPTYPE CONSOLE}{$ENDIF}
uses
SysUtils,crt;
const
answers: array[0..19] of string = ('It is certain.', 'It is decidedly so.',
'Without a doubt.', 'Yes - definitely.', 'You may rely on it.',
'As I see it, yes.', 'Most likely.', 'Outlook good.', 'Yes.',
'Signs point to yes.', 'Reply hazy, try again.', 'Ask again later',
'Better not tell you now.', 'Cannot predict now.',
'Concentrate and ask again.', 'Don''t count on it.', 'My reply is no.',
'My sources say no.', 'Outlook not so good.', 'Very doubtful.');
begin
Randomize;
repeat
writeln('Magic 8 Ball! Ask question and hit ENTER key for the answer!');
readln;
ClrScr;
writeln(answers[Random(length(answers))],#13#10);
writeln('Hit ESCape to leave');
repeat until keypressed;
ClrScr;
until readkey=#27;
end.

View file

@ -0,0 +1,16 @@
dim as string answer(0 to 19) = { "It is certain.", "It is decidedly so.", "Without a doubt.", "Yes definitely.",_
"You may rely on it.", "As I see it, yes.", "Most likely.", "Outlook good.",_
"Yes.", "Signs point to yes.", "Reply hazy, try again.", "Ask again later.",_
"Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.", "Don't count on it.",_
"My reply is no.", "My sources say no.", "Outlook not so good.", "Very doubtful." }
dim as string question
randomize timer
print "Q to quit."
do
input "What would you like to know? ", question
if ucase(question)="Q" then exit do
print answer(int(rnd*20))
print
loop

View file

@ -0,0 +1,18 @@
0 DATA "It is certain.", "It is decidedly so."
20 DATA "Without a doubt.", "Yes - definitely."
30 DATA "You may rely on it.", "As I see it, yes."
40 DATA "Most likely.", "Outlook good."
50 DATA "Yes.", "Signs point to yes."
60 DATA "Reply hazy, try again.", "Ask again later."
70 DATA "Better not tell you now.", "Cannot predict now."
80 DATA "Concentrate and ask again.", "Don't count on it."
90 DATA "My reply is no.", "My sources say no."
100 DATA "Outlook not so good.", "Very doubtful."
110 DIM M8BALL$(20)
120 FOR I=0 TO 19
130 READ M8BALL$(I)
140 NEXT I
150 RANDOMIZE TIMER
160 INPUT "What would you like to know? ", Q$
170 PRINT M8BALL$(INT(RND*20))
180 END

View file

@ -0,0 +1,40 @@
package main
import (
"bufio"
"bytes"
"fmt"
"log"
"math/rand"
"os"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
answers := [...]string{
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful",
}
const prompt = "\n? : "
fmt.Print("Please enter your question or a blank line to quit.\n" + prompt)
sc := bufio.NewScanner(os.Stdin)
for sc.Scan() {
question := sc.Bytes()
question = bytes.TrimSpace(question)
if len(question) == 0 {
break
}
answer := answers[rand.Intn(len(answers))]
fmt.Printf("\n%s\n"+prompt, answer)
}
if err := sc.Err(); err != nil {
log.Fatal(err)
}
}

View file

@ -0,0 +1,33 @@
import System.Random (getStdRandom, randomR)
import Control.Monad (forever)
answers :: [String]
answers =
[ "It is certain"
, "It is decidedly so"
, "Without a doubt"
, "Yes, definitely"
, "You may rely on it"
, "As I see it, yes"
, "Most likely"
, "Outlook good"
, "Signs point to yes"
, "Yes"
, "Reply hazy, try again"
, "Ask again later"
, "Better not tell you now"
, "Cannot predict now"
, "Concentrate and ask again"
, "Don't bet on it"
, "My reply is no"
, "My sources say no"
, "Outlook not so good"
, "Very doubtful"]
main :: IO ()
main = do
putStrLn "Hello. The Magic 8 Ball knows all. Type your question."
forever $ do
getLine
n <- getStdRandom (randomR (0, pred $ length answers))
putStrLn $ answers !! n

View file

@ -0,0 +1,20 @@
100 PROGRAM "Magic8.bas"
110 RANDOMIZE
120 STRING ANSWER$(1 TO 20)*26
130 FOR I=1 TO 20
140 READ ANSWER$(I)
150 NEXT
160 CLEAR SCREEN
170 PRINT "Magic 8-ball":PRINT "Q to quit.":PRINT
180 DO
190 INPUT PROMPT "What would you like to know? ":QUESTION$
200 IF LCASE$(QUESTION$)="q" THEN EXIT DO
210 PRINT ANSWER$(RND(20)+1):PRINT
220 LOOP
230 DATA It is certain.,It is decidedly so.,Without a doubt.
240 DATA Yes - definitely.,You may rely on it.,"As I see it, yes."
250 DATA Most likely.,Outlook good.,Yes.
260 DATA Signs point to yes.,"Reply hazy, try again.",Ask again later.
270 DATA Better not tell you now.,Cannot predict now.,Concentrate and ask again.
280 DATA Don't count on it.,My reply is no.,My sources say no.
290 DATA Outlook not so good.,Very doubtful.

View file

@ -0,0 +1,11 @@
NB. translated from awk
prompt=: [: 1!:1 [: 1: echo
ANSWERS=: [;._2'It is certain"It is decidedly so"Without a doubt"Yes, definitely"You may rely on it"As I see it, yes"Most likely"Outlook good"Signs point to yes"Yes"Reply hazy, try again"Ask again later"Better not tell you now"Cannot predict now"Concentrate and ask again"Don''t bet on it"My reply is no"My sources say no"Outlook not so good"Very doubtful"'
eight_ball=: ANSWERS&$: :(dyad define)
while. 0 < # prompt 'Please enter your question or a blank line to quit.' do.
echo ({~ ?@:#) x
end.
)

View file

@ -0,0 +1,27 @@
import java.util.Random;
import java.util.Scanner;
public class MagicEightBall {
public static void main(String[] args) {
new MagicEightBall().run();
}
private static String[] ANSWERS = new String[] {"It is certain.", "It is decidedly so.", "Without a doubt.", "Yes - definitely.",
"You may rely on it.", "As I see it, yes.", "Most likely.", "Outlook good.", "Yes.", "Signs point to yes.",
"Reply hazy, try again.", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.",
"Don't count on it.", "My reply is no.", "My sources say no.", "Outlook not so good.", "Very doubtful. "};
public void run() {
Random random = new Random();
System.out.printf("Hello. The Magic 8 Ball knows all. Type your question.%n%n");
try ( Scanner in = new Scanner(System.in); ) {
System.out.printf("? ");
while ( (in.nextLine()).length() > 0 ) {
System.out.printf("8 Ball Response: %s%n", ANSWERS[random.nextInt(ANSWERS.length)]);
System.out.printf("? ");
}
}
System.out.printf("%n8 Ball Done. Bye.");
}
}

View file

@ -0,0 +1,17 @@
//console
var answers = [ "It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"])
console.log("ASK ANY QUESTION TO THE MAGIC 8-BALL AND YOU SHALL RECEIVE AN ANSWER!")
for(;;){
var answer = prompt("question:")
console.log(answer)
console.log(answers[Math.floor(Math.random()*answers.length)]);
}

View file

@ -0,0 +1,14 @@
const responses = ["It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes", "Most likely",
"Outlook good", "Signs point to yes", "Yes", "Reply hazy, try again",
"Ask again later", "Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it", "My reply is no",
"My sources say no", "Outlook not so good", "Very doubtful"]
while true
println("Ask a question (blank to exit):")
if !occursin(r"[a-zA-Z]", readline(stdin))
break
end
println(rand(responses))
end

View file

@ -0,0 +1 @@
ask:{` 0:*1?"/"\"It is certain/It is decidedly so/Without a doubt/Yes, definitely/You may rely on it/As I see it, yes/Most likely/Outlook good/Signs point to yes/Yes/Reply hazy, try again/Ask again later/Better not tell you now/Cannot predict now/Concentrate and ask again/Don't bet on it/My reply is no/My sources say no/Outlook not so good/Very doubtful"}

View file

@ -0,0 +1,6 @@
ask "Will this work?"
Signs point to yes
ask "Was this worth doing?"
Without a doubt
ask "Can I have a cookie?"
Yes, definitely

View file

@ -0,0 +1,25 @@
// Version 1.2.40
import java.util.Random
fun main(args: Array<String>) {
val answers = listOf(
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"
)
val rand = Random()
println("Please enter your question or a blank line to quit.")
while (true) {
print("\n? : ")
val question = readLine()!!
if (question.trim() == "") return
val answer = answers[rand.nextInt(20)]
println("\n$answer")
}
}

View file

@ -0,0 +1,18 @@
data "It is certain","It is decidedly so","Without a doubt","Yes - definitely",_
"You may rely on it","As I see it, yes","Most likely","Outlook good","Yes",_
"Signs point to yes","Reply hazy, try again","Ask again later","Better not tell you now",_
"Cannot predict now","Concentrate and ask again","Don't count on it","My reply is no",_
"My sources say no","Outlook not so good","Very doubtful"
dim c$(20)
for a = 1 to 20
read b$
c$(a) = b$
next a
[loop]
input "Type your question: ";a$
if a$="" then end
d=int(rnd(1)*20)+1
print "Answer: ";c$(d)
goto [loop]

View file

@ -0,0 +1,26 @@
10 mode 2:defint a-z:randomize time
20 input "Your question (hit Return to quit)";i$
30 if i$="" then print "Goodbye!":end
40 q=1+19*rnd
50 on q gosub 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290
60 goto 20
100 print "It is certain":return
110 print "It is decidedly so":return
120 print "Without a doubt":return
130 print "Yes, definitely":return
140 print "You may rely on it":return
150 print "As I see it, yes":return
160 print "Most likely":return
170 print "Outlook good":return
180 print "Signs point to yes":return
190 print "Yes":return
200 print "Reply hazy, try again":return
210 print "Ask again later":return
220 print "Better not tell you now":return
230 print "Cannot predict now":return
240 print "Concentrate and ask again":return
250 print "Don't bet on it":return
260 print "My reply is no":return
270 print "My sources say no":return
280 print "Outlook not so good":return
290 print "Very doubtful":return

View file

@ -0,0 +1,12 @@
math.randomseed(os.time())
answers = {
"It is certain.", "It is decidedly so.", "Without a doubt.", "Yes, definitely.", "You may rely on it.",
"As I see it, yes.", "Most likely.", "Outlook good.", "Signs point to yes.", "Yes.",
"Reply hazy, try again.", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.",
"Don't bet on it.", "My reply is no.", "My sources say no.", "Outlook not so good.", "Very doubtful."
}
while true do
io.write("Q: ")
question = io.read()
print("A: "..answers[math.random(#answers)])
end

View file

@ -0,0 +1,13 @@
Module Magic.8.Ball {
answers=("It is certain", "It is decidedly so", "Without a doubt", "Yes, definitely", "You may rely on it", "As I see it, yes", "Most likely", "Outlook good", "Signs point to yes", "Yes", "Reply hazy, try again", "Ask again later", "Better not tell you now", "Cannot predict now", "Concentrate and ask again", "Don't bet on it", "My reply is no", "My sources say no", "Outlook not so good", "Very doubtful")
Print "Please enter your question or a blank line to quit."
{
Line Input A$
Print
A$=trim$(A$)
If A$="" Then Exit
Print Array$(answers, Random(0, 19))
Loop
}
}
Magic.8.Ball

View file

@ -0,0 +1,18 @@
100 CLS
110 DATA "It is certain.","It is decidedly so."
120 DATA "Without a doubt.","Yes - definitely."
130 DATA "You may rely on it.","As I see it, yes."
140 DATA "Most likely.","Outlook good."
150 DATA "Yes.","Signs point to yes."
160 DATA "Reply hazy, try again.","Ask again later."
170 DATA "Better not tell you now.","Cannot predict now."
180 DATA "Concentrate and ask again.","Don't count on it."
190 DATA "My reply is no.","My sources say no."
200 DATA "Outlook not so good.","Very doubtful."
210 DIM m$(20)
220 FOR i = 0 TO 19
230 READ m$(i)
240 NEXT i
260 INPUT "What would you like to know? "; q$
270 PRINT m$(INT(RND(20)))
280 END

View file

@ -0,0 +1,11 @@
answers = {"It is certain.", "It is decidedly so.",
"Without a doubt.", "Yes - definitely.", "You may rely on it.",
"As I see it, yes.", "Most likely.", "Outlook good.", "Yes.",
"Signs point to yes.", "Reply hazy, try again.",
"Ask again later.", "Better not tell you now.",
"Cannot predict now.", "Concentrate and ask again.",
"Don't count on it.", "My reply is no.", "My sources say no.",
"Outlook not so good.", "Very doubtful."};
q = Input["Please enter your question"];
SeedRandom[Hash[q]];
Print[RandomChoice[answers]]

View file

@ -0,0 +1,16 @@
randomize ; Seed the RNG with current timestamp.
(
"It is certain" "It is decidedly so" "Without a doubt"
"Yes, definitely" "You may rely on it" "As I see it, yes"
"Most likely" "Outlook good" "Signs point to yes" "Yes"
"Reply hazy, try again" "Ask again later"
"Better not tell you now" "Cannot predict now"
"Concentrate and ask again" "Don't bet on it"
"My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful"
) =phrases
(phrases dup size pred random get puts!) :answer
(true) ("Ask a question" ask answer) while

View file

@ -0,0 +1,11 @@
answers = ["It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"]
print "Ask your question and the Magic 8 Ball will give you the answer!"
input "What is your question?"
print answers[rnd * answers.len]

View file

@ -0,0 +1,26 @@
import random, strutils
const Answers = ["It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"]
proc exit() =
echo "Bye."
quit QuitSuccess
randomize()
try:
while true:
echo "Type your question or an empty line to quit."
stdout.write "? "
let question = stdin.readLine()
if question.strip().len == 0: exit()
echo Answers[rand(19)], ".\n"
except EOFError:
exit()

View file

@ -0,0 +1,16 @@
/* REXX */
a=.array~of("It is certain", "It is decidedly so", "Without a doubt",,
"Yes, definitely", "You may rely on it", "As I see it, yes",,
"Most likely", "Outlook good", "Signs point to yes", "Yes",,
"Reply hazy, try again", "Ask again later",,
"Better not tell you now", "Cannot predict now",,
"Concentrate and ask again", "Don't bet on it",,
"My reply is no", "My sources say no", "Outlook not so good",,
"Very doubtful")
Do Forever
Say 'your question:'
Parse Pull q
If q='' Then Leave
Say a[random(1,20)]
Say ''
End

View file

@ -0,0 +1,49 @@
<?php
$fortunes = array(
"It is certain",
"It is decidedly so",
"Without a doubt",
"Yes, definitely",
"You may rely on it",
"As I see it, yes",
"Most likely",
"Outlook good",
"Signs point to yes",
"Yes",
"Reply hazy, try again",
"Ask again later",
"Better not tell you now",
"Cannot predict now",
"Concentrate and ask again",
"Don't bet on it",
"My reply is no",
"My sources say no",
"Outlook not so good",
"Very doubtful"
);
/*
* Prompt the user at the CLI for the command
*/
function cli_prompt( $prompt='> ', $default=false ) {
// keep asking until a non-empty response is given
do {
// display the prompt
echo $prompt;
// read input and remove CRLF
$cmd = chop( fgets( STDIN ) );
} while ( empty( $default ) and empty( $cmd ) );
return $cmd ?: $default;
}
$question = cli_prompt( 'What is your question? ' );
echo 'Q: ', $question, PHP_EOL;
echo 'A: ', $fortunes[ array_rand( $fortunes ) ], PHP_EOL;

View file

@ -0,0 +1,12 @@
@a = ('It is certain', 'It is decidedly so', 'Without a doubt', 'Yes, definitely',
'You may rely on it', 'As I see it, yes', 'Most likely', 'Outlook good',
'Signs point to yes', 'Yes', 'Reply hazy, try again', 'Ask again later',
'Better not tell you now', 'Cannot predict now', 'Concentrate and ask again',
"Don't bet on it", 'My reply is no', 'My sources say no', 'Outlook not so good',
'Very doubtful');
while () {
print 'Enter your question:';
last unless <> =~ /\w/;
print @a[int rand @a], "\n";
}

View file

@ -0,0 +1,51 @@
(phixonline)-->
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">constant</span> <span style="color: #000000;">answers</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"As I see it, yes"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Ask again later"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"You may rely on it"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Without a doubt"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Don't bet on it"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Outlook not so good"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Signs point to yes"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"It is decidedly so"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"It is certain"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Better not tell you now"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"My reply is no"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Outlook good"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Concentrate and ask again"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Reply hazy, try again"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Yes"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Most likely"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Cannot predict now"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"My sources say maybe"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"My sources say no"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Yes, definitely"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Yes, probably not"</span><span style="color: #0000FF;">,</span>
<span style="color: #008000;">"Very doubtful"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Your question has already been answered"</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">vbox</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">question</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">answer</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">answered</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
<span style="color: #004080;">bool</span> <span style="color: #000000;">clearkey</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span>
<span style="color: #008080;">function</span> <span style="color: #000000;">key_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*dlg*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">atom</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #004600;">K_ESC</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #004600;">IUP_CLOSE</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #000080;font-style:italic;">-- (standard practice for me)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #004600;">K_F5</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span> <span style="color: #000080;font-style:italic;">-- (let browser reload work)</span>
<span style="color: #008080;">if</span> <span style="color: #000000;">c</span><span style="color: #0000FF;">=</span><span style="color: #004600;">K_CR</span> <span style="color: #008080;">then</span>
<span style="color: #004080;">string</span> <span style="color: #000000;">q</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupGetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">question</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"VALUE"</span><span style="color: #0000FF;">),</span> <span style="color: #000000;">reply</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">q</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">q</span><span style="color: #0000FF;">,</span><span style="color: #000000;">answered</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
<span style="color: #000000;">reply</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"Your question has already been answered"</span>
<span style="color: #008080;">else</span>
<span style="color: #000000;">answered</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">answered</span><span style="color: #0000FF;">,</span><span style="color: #000000;">q</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">reply</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">answers</span><span style="color: #0000FF;">[</span><span style="color: #7060A8;">rand</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">answers</span><span style="color: #0000FF;">))]</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #7060A8;">IupSetStrAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">answer</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"TITLE"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">reply</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">clearkey</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">true</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">elsif</span> <span style="color: #000000;">clearkey</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">IupSetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">question</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"VALUE"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">""</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">clearkey</span> <span style="color: #0000FF;">=</span> <span style="color: #004600;">false</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_CONTINUE</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
<span style="color: #000000;">question</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupText</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"EXPAND=HORIZONTAL"</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">answer</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #008000;">""</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"EXPAND=HORIZONTAL"</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">vbox</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupVbox</span><span style="color: #0000FF;">({</span><span style="color: #000000;">question</span><span style="color: #0000FF;">,</span><span style="color: #000000;">answer</span><span style="color: #0000FF;">},</span><span style="color: #008000;">`MARGIN=40x40`</span><span style="color: #0000FF;">)</span>
<span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #000000;">vbox</span><span style="color: #0000FF;">,</span><span style="color: #008000;">`TITLE="Magic 8-ball",SIZE=250x100`</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">IupSetCallback</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"KEY_CB"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"key_cb"</span><span style="color: #0000FF;">))</span>
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">IupHide</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--

View file

@ -0,0 +1,28 @@
Define.s Magic8="● It is certain."+#LF$+
"● It is decidedly so."+#LF$+
"● Without a doubt."+#LF$+
"● Yes definitely."+#LF$+
"● You may rely on it."+#LF$+
"● As I see it, yes."+#LF$+
"● Most likely."+#LF$+
"● Outlook good."+#LF$+
"● Yes."+#LF$+
"● Signs point To yes."+#LF$+
"● Reply hazy, try again."+#LF$+
"● Ask again later."+#LF$+
"● Better Not tell you now."+#LF$+
"● Cannot predict now."+#LF$+
"● Concentrate And ask again."+#LF$+
"● Don't count on it."+#LF$+
"● My reply is no."+#LF$+
"● My sources say no."+#LF$+
"● Outlook Not so good."+#LF$+
"● Very doubtful."+#LF$
OpenConsole()
Repeat
Print("MAGIC8: What would you like To know? "): q$=Input()
If Len(q$)=0 : End : EndIf
PrintN(StringField(Magic8,Random(CountString(Magic8,#LF$),1),#LF$))
ForEver

View file

@ -0,0 +1,21 @@
import random
s = ('It is certain', 'It is decidedly so', 'Without a doubt', 'Yes, definitely',
'You may rely on it', 'As I see it, yes', 'Most likely', 'Outlook good',
'Signs point to yes', 'Yes', 'Reply hazy, try again', 'Ask again later',
'Better not tell you now', 'Cannot predict now', 'Concentrate and ask again',
"Don't bet on it", 'My reply is no', 'My sources say no', 'Outlook not so good',
'Very doubtful')
q_and_a = {}
while True:
question = input('Ask your question:')
if len(question) == 0: break
if question in q_and_a:
print('Your question has already been answered')
else:
answer = random.choice(s)
q_and_a[question] = answer
print(answer)

View file

@ -0,0 +1,23 @@
DIM answer$(19)
FOR i = 0 TO UBOUND(answer$): READ answer$(i): NEXT i
RANDOMIZE TIMER
PRINT "Q to quit."
DO
INPUT "What would you like to know? ", question$
IF UCASE$(question$) = "Q" THEN EXIT DO
PRINT answer$(INT(RND * UBOUND(answer$)))
PRINT
LOOP
END
DATA "It is certain.","It is decidedly so."
DATA "Without a doubt.","Yes definitely."
DATA "You may rely on it.","As I see it, yes."
DATA "Most likely.","Outlook good.","Yes."
DATA "Signs point to yes.","Reply hazy, try again."
DATA "Ask again later.","Better not tell you now."
DATA "Cannot predict now.","Concentrate and ask again."
DATA "Don't count on it.","My reply is no."
DATA "My sources say no.","Outlook not so good."
DATA "Very doubtful."

View file

@ -0,0 +1,13 @@
[ 20 random
[ table
$ "Concentrate and ask again." $ "Yes."
$ "Better not tell you now." $ "Most likely."
$ "Reply hazy, try again." $ "Outlook good."
$ "Outlook not so good." $ "It is certain."
$ "Cannot predict now." $ "Very doubtful."
$ "Signs point to yes." $ "My reply is no."
$ "It is decidedly so." $ "Ask again later."
$ "You may rely on it." $ "Without a doubt."
$ "Don't count on it." $ "Yes - definitely."
$ "My sources say no." $ "As I see it, yes." ]
do echo$ cr ] is 8-ball ( --> )

View file

@ -0,0 +1,32 @@
eight_ball <- function()
{
responses <- c("It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful")
question <- ""
cat("Welcome to 8 ball!\n\n", "Please ask yes/no questions to get answers.",
" Type 'quit' to exit the program\n\n")
while(TRUE)
{
question <- readline(prompt="Enter Question: ")
if(question == 'quit')
{
break
}
randint <- runif(1, 1, 20)
cat("Response: ", responses[randint], "\n")
}
}
if(!interactive())
{
eight_ball()
}

View file

@ -0,0 +1,24 @@
/* REXX */
Call mk_a "It is certain", "It is decidedly so", "Without a doubt",,
"Yes, definitely", "You may rely on it", "As I see it, yes",,
"Most likely", "Outlook good", "Signs point to yes", "Yes",,
"Reply hazy, try again", "Ask again later",,
"Better not tell you now", "Cannot predict now",,
"Concentrate and ask again", "Don't bet on it",,
"My reply is no", "My sources say no", "Outlook not so good",,
"Very doubtful"
Do Forever
Say 'your question:'
Parse Pull q
If q='' Then Leave
z=random(1,a.0)
Say a.z
Say ''
End
Exit
mk_a:
a.0=arg()
Do i=1 To a.0
a.i=arg(i)
End
Return

View file

@ -0,0 +1,7 @@
/*REXX program simulates the "shaking" of a "Magic 8-ball" and displaying an answer.*/
$="It is certain ÷It is decidedly so ÷Without a doubt÷Yes, definitely÷Signs point to yes",
"÷You may rely on it÷ As I see it, yes÷My reply is no÷Outlook good÷Outlook not so good",
"÷Yes÷Ask again later÷Better not tell you now÷Cannot predict now÷Reply hazy, try again",
"÷Concentrate and ask again÷Don't bet on it÷Most likely÷My sources say no÷Very doubtful"
say space(translate(word(translate(translate($, '', " "), , '÷'), random(1, 20)), ,"")).

View file

@ -0,0 +1,18 @@
(define eight-ball-responses
(list "It is certain" "It is decidedly so" "Without a doubt" "Yes definitely" "You may rely on it"
"As I see it, yes" "Most likely" "Outlook good" "Yes" "Signs point to yes"
"Reply hazy try again" "Ask again later" "Better not tell you now" "Cannot predict now"
"Concentrate and ask again"
"Don't count on it" "My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful"))
(define ((answer-picker answers)) (sequence-ref answers (random (sequence-length answers))))
(define magic-eightball (answer-picker eight-ball-responses))
(module+ main
(let loop ()
(display "What do you want to know\n?")
(read-line)
(displayln (magic-eightball))
(loop)))

View file

@ -0,0 +1,8 @@
put 'Please enter your question or a blank line to quit.';
["It is certain", "It is decidedly so", "Without a doubt", "Yes, definitely",
"You may rely on it", "As I see it, yes", "Most likely", "Outlook good",
"Signs point to yes", "Yes", "Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now", "Concentrate and ask again",
"Don't bet on it", "My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"].roll.put while prompt('? : ').chars;

View file

@ -0,0 +1,12 @@
# Project : Magic 8-Ball
answers = ["It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"]
index = random(len(answers)-1)+1
see answers[index] + nl

View file

@ -0,0 +1,39 @@
#!/usr/bin/ruby
class EightBall
def initialize
print "Welcome to 8 ball! Ask your question below. "
puts "Type 'quit' to exit the program.\n\n"
@responses = ["It is certain", "It is decidedly so",
"Without a doubt", "Yes, definitely",
"You may rely on it", "As I see it, yes",
"Most likely", "Outlook good",
"Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now",
"Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no",
"Outlook not so good", "Very doubtful"]
end
def ask_question
print "Question: "
question = gets
if question.chomp.eql? "quit"
exit(0)
end
puts "Response: #{@responses.sample} \n\n"
end
def run
loop do
ask_question
end
end
end
eight_ball = EightBall.new
eight_ball.run

View file

@ -0,0 +1,43 @@
extern crate rand;
use rand::prelude::*;
use std::io;
fn main() {
let answers = [
"It is certain",
"It is decidedly so",
"Without a doubt",
"Yes, definitely",
"You may rely on it",
"As I see it, yes",
"Most likely",
"Outlook good",
"Signs point to yes",
"Yes",
"Reply hazy, try again",
"Ask again later",
"Better not tell you now",
"Cannot predict now",
"Concentrate and ask again",
"Don't bet on it",
"My reply is no",
"My sources say no",
"Outlook not so good",
"Very doubtful",
];
let mut rng = rand::thread_rng();
let mut input_line = String::new();
println!("Please enter your question or a blank line to quit.\n");
loop {
io::stdin()
.read_line(&mut input_line)
.expect("The read line failed.");
if input_line.trim() == "" {
break;
}
println!("{}\n", answers.choose(&mut rng).unwrap());
input_line.clear();
}
}

View file

@ -0,0 +1,20 @@
class MAIN is
const answers: ARRAY{STR} :=
|
"It is certain.", "It is decidedly so.",
"Without a doubt.", "Yes - definitely.", "You may rely on it.",
"As I see it, yes.", "Most likely.", "Outlook good.",
"Yes.", "Signs point to yes.", "Reply hazy, try again.",
"Ask again later.", "Better not tell you now.", "Cannot predict now.",
"Concentrate and ask again.", "Don't count on it.", "My reply is no.",
"My sources say no.", "Outlook not so good.", "Very doubtful."
|;
main is
RND::seed := #TIMES.wall_time;
loop
#OUT+"Your question: "; #OUT.flush;
question ::= #IN.get_str;
#OUT+answers[RND::int(0, answers.size-1)] + "\n";
end;
end;
end;

View file

@ -0,0 +1,29 @@
import scala.util.Random
object Magic8Ball extends App {
val shake: () => String = {
val answers = List(
"It is certain.", "It is decidedly so.", "Without a doubt.",
"Yes definitely.", "You may rely on it.", "As I see it, yes.",
"Most likely.", "Outlook good.", "Yes.", "Signs point to yes.",
"Reply hazy, try again.", "Ask again later", "Better not tell you now.",
"Cannot predict now.", "Concentrate and ask again.", "Don't count on it.",
"My reply is no.", "My sources say no.", "Outlook not so good.",
"Very doubtful."
)
val r = new Random
() => answers(r.nextInt(answers.length))
}
println("Ask the Magic 8-Ball your questions. ('q' or 'quit' to quit)\n")
while (true) {
io.StdIn.readLine("Question: ").toLowerCase match {
case "q" | "quit" =>
println("Goodbye.")
sys.exit()
case _ =>
println(s"Response: ${shake()}\n")
}
}
}

View file

@ -0,0 +1,34 @@
namespace path {::tcl::mathop ::tcl::mathfunc}
set answers {
"As I see it, yes"
"Ask again later"
"Better not tell you now"
"Cannot predict now"
"Concentrate and ask again"
"Don't bet on it"
"It is certain"
"It is decidedly so"
"Most likely"
"My reply is no"
"My sources say maybe"
"My sources say no"
"Outlook good"
"Outlook not so good"
"Reply hazy, try again"
"Signs point to yes"
"Very doubtful"
"Without a doubt"
"Yes"
"Yes, definitely"
"Yes, probably not"
"You may rely on it"
"Your question has already been answered"
}
puts -nonewline "Question: "; flush stdout
while {[gets stdin line] > 0} {
set answer [lindex $answers [int [* [rand] [llength $answers]]]]
puts "⑧ says “$answer”"
puts -nonewline "Question: "; flush stdout
}

View file

@ -0,0 +1,46 @@
10 PRINT "Concentrate hard on your question, then tell me your favorite number."
20 INPUT N
30 REM in lieu of a random number generator
40 IF N<0 THEN LET N=-N
50 IF N<20 THEN GOTO 1000+N*10
60 LET N=N-20
70 GOTO 50
1000 PRINT "It is certain."
1005 END
1010 PRINT "It is decidedly so."
1015 END
1020 PRINT "Without a doubt."
1025 END
1030 PRINT "Yes - definitely."
1035 END
1040 PRINT "You may rely on it."
1045 END
1050 PRINT "As I see it, yes."
1055 END
1060 PRINT "Most likely."
1065 END
1070 PRINT "Outlook good."
1075 END
1080 PRINT "Yes."
1085 END
1090 PRINT "Signs point to yes."
1095 END
1100 PRINT "Reply hazy, try again."
1105 END
1110 PRINT "Ask again later."
1115 END
1120 PRINT "Better not tell you now."
1125 END
1130 PRINT "Cannot predict now."
1135 END
1140 PRINT "Concentrate and ask again."
1145 END
1150 PRINT "Don't count on it."
1155 END
1160 PRINT "My reply is no."
1165 END
1170 PRINT "My sources say no."
1175 END
1180 PRINT "Outlook not so good."
1185 END
1190 PRINT "Very doubtful."

View file

@ -0,0 +1,23 @@
#lang transd
MainModule : {
ans: ["It is certain.", "It is decidedly so.", "Without a doubt.",
"Yes - definitely.", "You may rely on it.", "As I see it, yes.",
"Most likely.", "Outlook good.", "Yes.", "Signs point to yes.",
"Reply hazy, try again.", "Ask again later.",
"Better not tell you now.", "Cannot predict now.",
"Concentrate and ask again.", "Don't count on it.",
"My reply is no.", "My sources say no.", "Outlook not so good.",
"Very doubtful."],
_start: (lambda locals: sense 0 quest ""
(while true
(lout "Please, ask your question:")
(getline quest)
(if (not (size quest)) break)
(if (neq (back quest) "?") (lout "\nEh?") continue)
(= sense 0)
(tql quest reduce: ["col1"] using: (λ c Char() (+= sense c)))
(lout (get ans (mod sense 20)))
)
)
}

View file

@ -0,0 +1,24 @@
DIM answer$(20)
FOR i = 1 to ubound(answer$)
READ answer$(i)
NEXT i
DATA "It is certain.", "It is decidedly so."
DATA "Without a doubt.", "Yes definitely."
DATA "You may rely on it.", "As I see it, yes."
DATA "Most likely.", "Outlook good.", "Yes."
DATA "Signs point to yes.", "Reply hazy, try again."
DATA "Ask again later.", "Better not tell you now."
DATA "Cannot predict now.", "Concentrate and ask again."
DATA "Don't count on it.", "My reply is no."
DATA "My sources say no.", "Outlook not so good."
DATA "Very doubtful."
RANDOMIZE
PRINT "Q to quit."
DO
INPUT prompt "What would you like to know? ": question$
IF ucase$(question$) = "Q" then EXIT DO
PRINT answer$(int(rnd*ubound(answer$)))
PRINT
LOOP
END

View file

@ -0,0 +1,24 @@
#!/bin/bash
RESPONSES=("It is certain" "It is decidedly so" "Without a doubt"
"Yes definitely" "You may rely on it" "As I see it yes"
"Most likely" "Outlook good" "Signs point to yes" "Yes"
"Reply hazy try again" "Ask again later"
"Better not tell you now" "Cannot predict now"
"Concentrate and ask again" "Don't bet on it"
"My reply is no" "My sources say no" "Outlook not so good"
"Very doubtful")
printf "Welcome to 8 ball! Enter your questions using the prompt below to
find the answers you seek. Type 'quit' to exit.\n\n"
while true; do
read -p 'Enter Question: ' question
if [ "$question" == "quit" ]; then
exit 0
fi
response_index=$(($RANDOM % 20))
printf "Response: ${RESPONSES[response_index]}\n\n"
done

View file

@ -0,0 +1,23 @@
import "random" for Random
import "io" for Stdin, Stdout
var answers = [
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"
]
var rand = Random.new()
System.print("Please enter your question or a blank line to quit.")
while (true) {
System.write("\n? : ")
Stdout.flush()
var question = Stdin.readLine()
if (question.trim() == "") return
var answer = answers[rand.int(20)]
System.print("\n%(answer)")
}

View file

@ -0,0 +1,6 @@
set Responses = ["It is Certain.","It is decidedly so.","Without a doubt.","Yes definitely.","You may rely on it","As I see it, yes.","Most likely.","Outlook good.","Yes.","Sign points to yes.","Reply hazy, try again.","Ask again later.","Better not tell you now.","Cannot predict now.","Concentrate and ask again.","Don't count on it.","My reply is no.","My sources say no.","Outlook not so good.","Very doubtful."];
while(true){
window->prompt("Ask 8-Ball a question");
log(Responses[rnd(0,?Responses-1)]);
}

View file

@ -0,0 +1,15 @@
set Responses = ["It is Certain.","It is decidedly so.","Without a doubt.","Yes definitely.","You may rely on it","As I see it, yes.","Most likely.","Outlook good.","Yes.","Sign points to yes.","Reply hazy, try again.","Ask again later.","Better not tell you now.","Cannot predict now.","Concentrate and ask again.","Don't count on it.","My reply is no.","My sources say no.","Outlook not so good.","Very doubtful."];
func Compile(String){
set n = 0;
foreach(k,v as String){
n+=string.char(v);
}
send n;
}
while(true){
let Response = window->prompt("Ask 8-Ball a question");
let N = Compile(Response);
log(Responses[N%(?Responses)]);
}

View file

@ -0,0 +1,21 @@
int Answers, Answer, Question;
[Answers:= [
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"];
Text(0, "Please enter your question or a blank line to quit.
");
while true do
[CrLf(0); Text(0, "? : ");
Question:= ChIn(0);
if Question = \CR\$0D then return;
OpenI(0); \discard any remaining chars in keyboard buffer
Answer:= Answers(Ran(20));
Text(0, Answer); CrLf(0);
]
]

View file

@ -0,0 +1,21 @@
dim answer$(19)
for i = 0 to arraysize(answer$(),1): read answer$(i): next i
print "Q to quit."
do
input "What would you like to know? " question$
if upper$(question$) = "Q" then end : fi
print answer$(int(ran(arraysize(answer$(),1))))
print
loop
data "It is certain.","It is decidedly so."
data "Without a doubt.","Yes definitely."
data "You may rely on it.","As I see it, yes."
data "Most likely.","Outlook good.","Yes."
data "Signs point to yes.","Reply hazy, try again."
data "Ask again later.","Better not tell you now."
data "Cannot predict now.","Concentrate and ask again."
data "Don//t count on it.","My reply is no."
data "My sources say no.","Outlook not so good."
data "Very doubtful."

View file

@ -0,0 +1,12 @@
answers:=T(
"It is certain", "It is decidedly so", "Without a doubt",
"Yes, definitely", "You may rely on it", "As I see it, yes",
"Most likely", "Outlook good", "Signs point to yes", "Yes",
"Reply hazy, try again", "Ask again later",
"Better not tell you now", "Cannot predict now",
"Concentrate and ask again", "Don't bet on it",
"My reply is no", "My sources say no", "Outlook not so good",
"Very doubtful"
);
println("Please enter your question or a blank line to quit.");
while(ask("? : ")){ println(answers[(0).random(answers.len())]) }