Solve hanging lantern problem: Difference between revisions

Content added Content deleted
(Solve hanging lantern problem in FreeBASIC)
(Solve hanging lantern problem in various BASIC dialents (BASIC256, QBasic, PureBasic and Yabasic))
Line 44: Line 44:
[b,a,c,…]
[b,a,c,…]
……
……


=={{header|BASIC}}==
==={{header|BASIC256}}===
{{trans|FreeBASIC}}
The result for n >= 5 is slow to emerge
<lang freebasic>arraybase 1
n = 4
dim a(n)
for i = 1 to a[?]
a[i] = i
print "[ ";
for j = 1 to i
print a[j]; " ";
next j
print "] = "; getLantern(a)
next i
end

function getLantern(arr)
res = 0
for i = 1 to arr[?]
if arr[i] <> 0 then
arr[i] -= 1
res += getLantern(arr)
arr[i] += 1
end if
next i
if res = 0 then res = 1
return res
end function</lang>
{{out}}
<pre>Same as FreeBASIC entry.</pre>

==={{header|QBasic}}===
{{works with|QBasic|1.1}}
{{works with|QuickBasic|4.5}}
{{trans|FreeBASIC}}
The result for n >= 5 is slow to emerge
<lang QBasic>FUNCTION getLantern (arr())
res = 0
FOR i = 1 TO UBOUND(arr)
IF arr(i) <> 0 THEN
arr(i) = arr(i) - 1
res = res + getLantern(arr())
arr(i) = arr(i) + 1
END IF
NEXT i
IF res = 0 THEN res = 1
getLantern = res
END FUNCTION

n = 4
DIM a(n)
FOR i = 1 TO UBOUND(a)
a(i) = i
PRINT "[";
FOR j = 1 TO i
PRINT a(j); " ";
NEXT j
PRINT "] = "; getLantern(a())
NEXT i
END</lang>
{{out}}
<pre>Same as FreeBASIC entry.</pre>

==={{header|PureBasic}}===
{{trans|FreeBASIC}}
The result for n >= 5 is slow to emerge
<lang PureBasic>;;The result For n >= 5 is slow To emerge
Procedure getLantern(Array arr(1))
res.l = 0
For i.l = 1 To ArraySize(arr(),1)
If arr(i) <> 0
arr(i) - 1
res + getLantern(arr())
arr(i) + 1
EndIf
Next i
If res = 0
res = 1
EndIf
ProcedureReturn res
EndProcedure

OpenConsole()
n.i = 4
Dim a.i(n)
For i.l = 1 To ArraySize(a())
a(i) = i
Print("[")
For j.l = 1 To i
Print(Str(a(j)) + " ")
Next j
PrintN("] = " + Str(getLantern(a())))
Next i
Input()
CloseConsole()</lang>
{{out}}
<pre>Same as FreeBASIC entry.</pre>

==={{header|Yabasic}}===
{{trans|FreeBASIC}}
The result for n >= 5 is slow to emerge
<lang yabasic>n = 4
dim a(n)
for i = 1 to arraysize(a(),1)
a(i) = i
print "[ ";
for j = 1 to i
print a(j), " ";
next j
print "] = ", getLantern(a())
next i

sub getLantern(arr())
local res, i
res = 0
for i = 1 to arraysize(arr(),1)
if arr(i) <> 0 then
arr(i) = arr(i) - 1
res = res + getLantern(arr())
arr(i) = arr(i) + 1
fi
next i
if res = 0 res = 1
return res
end sub</lang>
{{out}}
<pre>Same as FreeBASIC entry.</pre>




Line 112: Line 242:
Print "] = "; getLantern(a())
Print "] = "; getLantern(a())
Next i
Next i
'
Color 3 : Print !"\n--- terminado, pulsa RETURN---"
Sleep</lang>
Sleep</lang>
{{out}}
{{out}}