Rosetta Code/Tasks without examples: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added libheader) |
|||
Line 384: | Line 384: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|Nim}}== |
|||
{{trans|Go}} |
|||
<lang Nim>import htmlparser, httpclient, os, re, strutils, xmltree |
|||
let re1 = re("""<li><a href="/wiki/(.*?)"""") |
|||
const Page = "http://rosettacode.org/wiki/Category:Programming_Tasks" |
|||
var client = newHttpClient() |
|||
# Find tasks. |
|||
var body = client.getContent(Page) |
|||
var tasks: seq[string] |
|||
var start = 0 |
|||
while true: |
|||
var matches: array[1, string] |
|||
start = body.find(re1, matches, start) + 1 |
|||
if start == 0: break |
|||
if not matches[0].startsWith("Category:"): |
|||
tasks.add matches[0] |
|||
const Base = "http://rosettacode.org/wiki/" |
|||
const Limit = 3 # number of tasks to print out. |
|||
let re2 = re("""(?s)using any language you may know.</div>(.*?)<div id="toc"""") |
|||
for i, task in tasks: |
|||
var matches: array[2, string] |
|||
let page = Base & task |
|||
body = client.getContent(page) |
|||
if body.find(re2, matches) < 0: |
|||
raise newException(ValueError, "unable to find pattern in page.") |
|||
let xmlnode = matches[0].parseHtml() # Build an XML tree from the HTML. |
|||
echo task.replace('_', ' ') |
|||
echo xmlnode.innerText() # Echo the tree as text. |
|||
if i == Limit - 1: break |
|||
os.sleep(5000) # Wait 5 seconds before processing next task.</lang> |
|||
{{out}} |
|||
<pre>100 doors |
|||
There are 100 doors in a row that are all initially closed. |
|||
You make 100 passes by the doors. |
|||
The first time through, visit every door and toggle the door (if the door is closed, open it; if it is open, close it). |
|||
The second time, only visit every 2nd door (door #2, #4, #6, ...), and toggle it. |
|||
The third time, visit every 3rd door (door #3, #6, #9, ...), etc, until you only visit the 100th door. |
|||
Task |
|||
Answer the question: what state are the doors in after the last pass? Which are open, which are closed? |
|||
Alternate: |
|||
As noted in this page's discussion page, the only doors that remain open are those whose numbers are perfect squares. |
|||
Opening only those doors is an optimization that may also be expressed; |
|||
however, as should be obvious, this defeats the intent of comparing implementations across programming languages. |
|||
100 prisoners |
|||
The Problem |
|||
100 prisoners are individually numbered 1 to 100 |
|||
A room having a cupboard of 100 opaque drawers numbered 1 to 100, that cannot be seen from outside. |
|||
Cards numbered 1 to 100 are placed randomly, one to a drawer, and the drawers all closed; at the start. |
|||
Prisoners start outside the room |
|||
They can decide some strategy before any enter the room. |
|||
Prisoners enter the room one by one, can open a drawer, inspect the card number in the drawer, then close the drawer. |
|||
A prisoner can open no more than 50 drawers. |
|||
A prisoner tries to find his own number. |
|||
A prisoner finding his own number is then held apart from the others. |
|||
If all 100 prisoners find their own numbers then they will all be pardoned. If any don't then all sentences stand. |
|||
The task |
|||
Simulate several thousand instances of the game where the prisoners randomly open drawers |
|||
Simulate several thousand instances of the game where the prisoners use the optimal strategy mentioned in the Wikipedia article, of: |
|||
First opening the drawer whose outside number is his prisoner number. |
|||
If the card within has his number then he succeeds otherwise he opens the drawer with the same number as that of the revealed card. (until he opens his maximum). |
|||
Show and compare the computed probabilities of success for the two strategies, here, on this page. |
|||
References |
|||
The unbelievable solution to the 100 prisoner puzzle standupmaths (Video). |
|||
wp:100 prisoners problem |
|||
100 Prisoners Escape Puzzle DataGenetics. |
|||
Random permutation statistics#One hundred prisoners on Wikipedia. |
|||
15 puzzle game |
|||
Task |
|||
Implement the Fifteen Puzzle Game. |
|||
The 15-puzzle is also known as: |
|||
Fifteen Puzzle |
|||
Gem Puzzle |
|||
Boss Puzzle |
|||
Game of Fifteen |
|||
Mystic Square |
|||
14-15 Puzzle |
|||
and some others. |
|||
Related Tasks |
|||
15 Puzzle Solver |
|||
16 Puzzle Game |
|||
</pre> |
|||
=={{header|Perl}}== |
=={{header|Perl}}== |