Pancake numbers: Difference between revisions
Content added Content deleted
(Added Applesoft BASIC, BASIC256, Chipmunk Basic, Gambas, GW-BASIC, MSX Basic, PureBasic, QBasic, True BASIC and Yabasic) |
|||
Line 48: | Line 48: | ||
p(16) = 18 p(17) = 19 p(18) = 20 p(19) = 21 p(20) = 23 |
p(16) = 18 p(17) = 19 p(18) = 20 p(19) = 21 p(20) = 23 |
||
</pre> |
</pre> |
||
=={{header|BASIC}}== |
|||
==={{header|Applesoft BASIC}}=== |
|||
{{works with|Chipmunk Basic}} |
|||
{{works with|QBasic}} |
|||
<syntaxhighlight lang="qbasic">100 HOME |
|||
110 FOR I = 0 TO 3 |
|||
120 FOR J = 1 TO 5 |
|||
130 LET N = (I * 5) + J |
|||
140 LET C = C + 1 |
|||
150 GOSUB 200 |
|||
160 PRINT "p("; N; ") = "; P; " " |
|||
170 NEXT J |
|||
180 NEXT I |
|||
190 END |
|||
200 REM pancake(n) |
|||
210 LET G = 2 : LET S = 2 : LET A = -1 |
|||
220 IF S < N THEN LET A = A + 1 : LET G = (G * 2) - 1 : LET S = S + G |
|||
230 IF S >= N THEN LET P = N + A : RETURN |
|||
240 GOTO 220</syntaxhighlight> |
|||
==={{header|BASIC256}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="vb">c = 0 |
|||
for i = 0 to 3 |
|||
for j = 1 to 5 |
|||
n = (i * 5) + j |
|||
c += 1 |
|||
print "p("; rjust(string(n),2); ") = "; pancake(n); " "; |
|||
if c mod 5 = 0 then print |
|||
next j |
|||
next i |
|||
end |
|||
function pancake(n) |
|||
gap = 2 |
|||
sum = 2 |
|||
adj = -1 |
|||
while sum < n |
|||
adj += 1 |
|||
gap = (gap * 2) - 1 |
|||
sum += gap |
|||
end while |
|||
return rjust(string(n + adj), 2) |
|||
end function</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
==={{header|Chipmunk Basic}}=== |
|||
{{works with|Chipmunk Basic|3.6.4}} |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="qbasic">100 c = 0 |
|||
110 for i = 0 to 3 |
|||
120 for j = 1 to 5 |
|||
130 n = (i*5)+j |
|||
140 c = c+1 |
|||
150 print "p(";format$(n,"##");") = ";format$(pancake(n),"##");" "; |
|||
160 if c mod 5 = 0 then print |
|||
170 next j |
|||
180 next i |
|||
190 end |
|||
200 function pancake(n) |
|||
210 gap = 2 |
|||
220 sum = 2 |
|||
230 adj = -1 |
|||
240 while sum < n |
|||
250 adj = adj+1 |
|||
260 gap = (gap*2)-1 |
|||
270 sum = sum+gap |
|||
280 wend |
|||
290 pancake = n+adj |
|||
300 end function</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
==={{header|Gambas}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="vbnet">Public Sub Main() |
|||
Dim i As Integer, j As Integer, c As Integer = 0, n As Integer |
|||
For i = 0 To 3 |
|||
For j = 1 To 5 |
|||
n = (i * 5) + j |
|||
c += 1 |
|||
Print "p("; Format$(n, "##"); ") = "; Format$(pancake(n), "##"); " "; |
|||
If c Mod 5 = 0 Then Print |
|||
Next |
|||
Next |
|||
End |
|||
Function pancake(n As Integer) As Integer |
|||
Dim gap As Integer = 2, sum As Integer = 2, adj As Integer = -1 |
|||
While sum < n |
|||
adj += 1 |
|||
gap = (gap * 2) - 1 |
|||
sum += gap |
|||
Wend |
|||
Return n + adj |
|||
End Function</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
==={{header|GW-BASIC}}=== |
|||
{{works with|Chipmunk Basic}} |
|||
{{works with|MSX-BASIC}} |
|||
{{works with|PC-BASIC|any}} |
|||
{{works with|QBasic}} |
|||
<syntaxhighlight lang="qbasic">100 CLS |
|||
110 FOR I = 0 TO 3 |
|||
120 FOR J = 1 TO 5 |
|||
130 N = (I*5)+J |
|||
140 C = C+1 |
|||
150 GOSUB 200 |
|||
160 PRINT USING "p(##) = ## ";N;PANCAKE |
|||
170 NEXT J |
|||
180 NEXT I |
|||
190 END |
|||
200 REM pancake(n) |
|||
210 GAP = 2 |
|||
220 SUM = 2 |
|||
230 ADJ = -1 |
|||
240 IF SUM < N THEN ADJ = ADJ+1 : GAP = (GAP*2)-1 : SUM = SUM+GAP |
|||
250 IF SUM >= N THEN PANCAKE = N+ADJ : RETURN |
|||
260 GOTO 240</syntaxhighlight> |
|||
{{out}} |
|||
<pre>p(1) = 0 |
|||
p(2) = 1 |
|||
p(3) = 3 |
|||
p(4) = 4 |
|||
p(5) = 5 |
|||
p(6) = 7 |
|||
p(7) = 8 |
|||
p(8) = 9 |
|||
p(9) = 10 |
|||
p(10) = 11 |
|||
p(11) = 13 |
|||
p(12) = 14 |
|||
p(13) = 15 |
|||
p(14) = 16 |
|||
p(15) = 17 |
|||
p(16) = 18 |
|||
p(17) = 19 |
|||
p(18) = 20 |
|||
p(19) = 21 |
|||
p(20) = 23</pre> |
|||
==={{header|MSX Basic}}=== |
|||
<syntaxhighlight lang="qbasic"></syntaxhighlight> |
|||
The [[#GW-BASIC|GW-BASIC]] solution works without any changes. |
|||
==={{header|PureBasic}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="purebasic">Procedure pancake(n) |
|||
gap.i = 2 |
|||
sum.i = 2 |
|||
adj.i = -1 |
|||
While sum < n |
|||
adj + 1 |
|||
gap = (gap * 2) - 1 |
|||
sum + gap |
|||
Wend |
|||
ProcedureReturn n + adj |
|||
EndProcedure |
|||
OpenConsole() |
|||
Define.i i, j, c, n |
|||
For i = 0 To 3 |
|||
For j = 1 To 5 |
|||
n = (i * 5) + j |
|||
c + 1 |
|||
Print("p(" + RSet(Str(n),2) + ") = " + RSet(Str(pancake(n)),2) + " ") |
|||
If Mod(c, 5 )= 0: PrintN(""): EndIf |
|||
Next j |
|||
Next i |
|||
Input() |
|||
CloseConsole()</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
==={{header|QBasic}}=== |
|||
{{works with|QBasic|1.1}} |
|||
{{works with|QuickBasic|4.5}} |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="qbasic">DECLARE FUNCTION pancake! (n) |
|||
FOR i = 0 TO 3 |
|||
FOR j = 1 TO 5 |
|||
n = (i * 5) + j |
|||
c = c + 1 |
|||
PRINT USING "p(##) = ## "; n; pancake(n); |
|||
IF c MOD 5 = 0 THEN PRINT |
|||
NEXT j |
|||
NEXT i |
|||
FUNCTION pancake (n) |
|||
gap = 2 |
|||
sum = 2 |
|||
adj = -1 |
|||
WHILE sum < n |
|||
adj = adj + 1 |
|||
gap = (gap * 2) - 1 |
|||
sum = sum + gap |
|||
WEND |
|||
pancake = n + adj |
|||
END FUNCTION</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
==={{header|True BASIC}}=== |
|||
{{trans|QBasic}} |
|||
<syntaxhighlight lang="qbasic">FUNCTION pancake(n) |
|||
LET gap = 2 |
|||
LET sum = 2 |
|||
LET adj = -1 |
|||
DO while sum < n |
|||
LET adj = adj+1 |
|||
LET gap = (gap*2)-1 |
|||
LET sum = sum+gap |
|||
LOOP |
|||
LET pancake = n+adj |
|||
END FUNCTION |
|||
FOR i = 0 to 3 |
|||
FOR j = 1 to 5 |
|||
LET n = (i*5)+j |
|||
LET c = c+1 |
|||
PRINT using "p(##) = ## ": n, pancake(n); |
|||
IF remainder(round(c),5) = 0 then PRINT |
|||
NEXT j |
|||
NEXT i |
|||
END</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as QBasic entry.</pre> |
|||
==={{header|Yabasic}}=== |
|||
{{trans|FreeBASIC}} |
|||
<syntaxhighlight lang="vb">for i = 0 to 3 |
|||
for j = 1 to 5 |
|||
n = (i * 5) + j |
|||
c = c + 1 |
|||
print "p(", n using "##", ") = "; |
|||
print pancake(n) using "##", " "; |
|||
if mod(c, 5) = 0 print |
|||
next j |
|||
next i |
|||
end |
|||
sub pancake(n) |
|||
gap = 2 |
|||
sum = 2 |
|||
adj = -1 |
|||
while sum < n |
|||
adj = adj + 1 |
|||
gap = (gap * 2) - 1 |
|||
sum = sum + gap |
|||
wend |
|||
return n + adj |
|||
end sub</syntaxhighlight> |
|||
{{out}} |
|||
<pre>Same as FreeBASIC entry.</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |
||
{{incomplete|C|Show examples requiring p(1..9) flips}} |
{{incomplete|C|Show examples requiring p(1..9) flips}} |