Rosetta Code/List authors of task descriptions: Difference between revisions

From Rosetta Code
Content added Content deleted
m (→‎{{header|Perl 6}}: Restore broken task links)
m (→‎{{header|Perl 6}}: Tweak code a bit. Just leave a short sample output with task. Separate and update full list)
Line 21: Line 21:
Please '''DO NOT''' add a full output for ''each'' programming language; just show a representative sample. One full list is useful. Multiple full lists just use space and bandwidth.
Please '''DO NOT''' add a full output for ''each'' programming language; just show a representative sample. One full list is useful. Multiple full lists just use space and bandwidth.


<div style="height:80ex;overflow:scroll;border-style:ridge;">
=={{header|Perl 6}}==
<table border="1" cellpadding="4"><tr><th colspan="2">As of 2017-09-10 | Total: 1064 / Tasks: 858 / Draft Tasks: 206<tr><th>User</th><th>Authored</th></tr>
{{works with|Rakudo|2017.08}}

The pseudocode above is no longer really useful as the page format has changed. Rather than checking '''every''' edit to see if it was a change to the task description, we'll just assume the user that created the page is the task author. This isn't 100% accurate; a very few pages got renamed and recreated by someone other than the original author without preserving the history, so they are misreported (15 Puzzle Game for instance,) but is as good as it is likely to get without extensive manual intervention. Any further edits to the task description are not credited. As it is, we must still make ''thousands'' of requests and pound the server pretty hard. Checking '''every''' edit would make the task several of orders of magnitude more abusive of the server (and my internet connection.)

Each stage of the scraping process is saved to local files so it can be restarted without losing all your progress in the event of a timeout or error. If that happens though, you need to manually adjust where to restart the process.

<lang perl6>use HTTP::UserAgent;
use Gumbo;
use Sort::Naturally;

my $ua = HTTP::UserAgent.new;

for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category
{ # Get lists of Tasks & Draft Tasks
# last; # Uncomment to skip this step
my $page = "http://rosettacode.org/wiki/Category:$category";
my $html = $ua.get($page).content;
my $xmldoc = parse-html($html, :TAG<div>, :id<mw-pages>);
my @tasks = parse-html($xmldoc[0].Str, :TAG<li>).Str.comb( /'/wiki/' <-["]>+ / )>>.substr(6); #"
my $f = open("./RC_{$category}.txt", :w) or die "$!\n";
$f.print( @tasks.join("\n") );
$f.close;
}

for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category
{ # Scrape info from each page.
# last; # Uncomment to skip this step
my @tasks = "./RC_{$category}.txt".IO.slurp.lines;

for @tasks -> $title {

my $ua = HTTP::UserAgent.new;
# Get the earliest edit
my $addr = "http://rosettacode.org/mw/index.php?title={$title}&dir=prev&limit=1&action=history";

my $html = $ua.get: $addr;

$html.content ~~ m|'<li><span class="mw-history-histlinks">' (.+?) '</ul>' |;

my $line = $0.lines.tail;
# Parse out the User name
$line ~~ m| 'title="User:' <-[>]>+? '>' (.+?) '</a>' |;

my $auth = $0;
# Oops, no user name, must be anonymous, get IP address instead
unless $auth {
$line ~~ m| '"mw-userlink mw-anonuserlink">' (.+?) '</a>' |;
$auth = $0;
}

# Parse out human readable title
$line ~~ m| '<a href="/mw/index.php?title=' $title '&amp;' .+? 'title="'(.+?)'">cur</a>' |;

my $decoded = $0;
# report progress
say "$decoded: $auth";

# save it to a file
my $f = open("./RC_Authors.txt", :a) or die "$!\n";
$f.say( "[[$title|$decoded]]\t$category\t$auth" );
$f.close;

sleep 3; # Don't pound the server
}
sleep 300; # Wait between batches, seems to disconnect after 1000 requests without pause
}

my %authors;

# Generate an HTML table from the results.
my ($cnt, $draftcnt, $taskcnt);
"./RC_Authors.txt".IO.slurp.lines.map: {
my ($task, $cat, $auth) = $_.split("\t");
$cnt++;
if $cat.contains('Draft') {
$cat = 'Draft:';
$draftcnt++;
} else {
$cat = 'Task: ';
$taskcnt++;
}
%authors{$auth}.push: "$cat $task";
};

# Dump an HTML table to STDOUT, capture it for display
say '<table border="1"><tr><th colspan="2">As of ', Date.today, ' | Total: ',
$cnt, ' / Tasks: ', $taskcnt, ' / Draft Tasks: ', $draftcnt,
'<tr><th>User</th><th>Authored</th></tr>';
for %authors.sort(*.key.&naturally) -> $a {
print '<tr><td>', $a.key, '</td><td><ol><li>';
print $a.value.sort( *.substr(7) ).join('</li><li>');
say '</ol></td></tr>';
}
say '</table>';</lang>
{{out}}

<div style="height:60ex;overflow:scroll;"><table border="1"><tr><th colspan="2">As of 2017-09-04 | Total: 1059 / Tasks: 854 / Draft Tasks: 205<tr><th>User</th><th>Authored</th></tr>
<tr><td>2Powers</td><td><ol><li>Draft: [[Names_to_numbers|Names to numbers]]</li><li>Draft: [[Solving_coin_problems|Solving coin problems]]</ol></td></tr>
<tr><td>2Powers</td><td><ol><li>Draft: [[Names_to_numbers|Names to numbers]]</li><li>Draft: [[Solving_coin_problems|Solving coin problems]]</ol></td></tr>
<tr><td>12.175.32.19</td><td><ol><li>Task: [[Soundex|Soundex]]</ol></td></tr>
<tr><td>12.175.32.19</td><td><ol><li>Task: [[Soundex|Soundex]]</ol></td></tr>
Line 165: Line 68:
<tr><td>Alegend</td><td><ol><li>Task: [[Evaluate_binomial_coefficients|Evaluate binomial coefficients]]</ol></td></tr>
<tr><td>Alegend</td><td><ol><li>Task: [[Evaluate_binomial_coefficients|Evaluate binomial coefficients]]</ol></td></tr>
<tr><td>AlexLehm</td><td><ol><li>Task: [[Langton%27s_ant|Langton's ant]]</ol></td></tr>
<tr><td>AlexLehm</td><td><ol><li>Task: [[Langton%27s_ant|Langton's ant]]</ol></td></tr>
<tr><td>Aloisdg</td><td><ol><li>Draft: [[Munchausen_numbers|Munchausen numbers]]</li><li>Draft: [[Sattolo_cycle|Sattolo cycle]]</li><li>Draft: [[Two_Sum|Two Sum]]</ol></td></tr>
<tr><td>Aloisdg</td><td><ol><li>Draft: [[Diversity_prediction_theorem|Diversity prediction theorem]]</li><li>Draft: [[Munchausen_numbers|Munchausen numbers]]</li><li>Draft: [[Sattolo_cycle|Sattolo cycle]]</li><li>Draft: [[Two_Sum|Two Sum]]</ol></td></tr>
<tr><td>AnatolV</td><td><ol><li>Task: [[Kronecker_product_based_fractals|Kronecker product based fractals]]</li><li>Task: [[Kronecker_product|Kronecker product]]</ol></td></tr>
<tr><td>AnatolV</td><td><ol><li>Task: [[Kronecker_product_based_fractals|Kronecker product based fractals]]</li><li>Task: [[Kronecker_product|Kronecker product]]</ol></td></tr>
<tr><td>Avi</td><td><ol><li>Task: [[Cholesky_decomposition|Cholesky decomposition]]</li><li>Task: [[Element-wise_operations|Element-wise operations]]</li><li>Task: [[Euler_method|Euler method]]</li><li>Task: [[LU_decomposition|LU decomposition]]</li><li>Task: [[Numerical_integration/Gauss-Legendre_Quadrature|Numerical integration/Gauss-Legendre Quadrature]]</li><li>Task: [[QR_decomposition|QR decomposition]]</li><li>Task: [[UTF-8_encode_and_decode|UTF-8 encode and decode]]</ol></td></tr>
<tr><td>Avi</td><td><ol><li>Task: [[Cholesky_decomposition|Cholesky decomposition]]</li><li>Task: [[Element-wise_operations|Element-wise operations]]</li><li>Task: [[Euler_method|Euler method]]</li><li>Task: [[LU_decomposition|LU decomposition]]</li><li>Task: [[Numerical_integration/Gauss-Legendre_Quadrature|Numerical integration/Gauss-Legendre Quadrature]]</li><li>Task: [[QR_decomposition|QR decomposition]]</li><li>Task: [[UTF-8_encode_and_decode|UTF-8 encode and decode]]</ol></td></tr>
Line 200: Line 103:
<tr><td>Davgot</td><td><ol><li>Task: [[Chinese_remainder_theorem|Chinese remainder theorem]]</ol></td></tr>
<tr><td>Davgot</td><td><ol><li>Task: [[Chinese_remainder_theorem|Chinese remainder theorem]]</ol></td></tr>
<tr><td>DavidMcCabe</td><td><ol><li>Task: [[Send_an_unknown_method_call|Send an unknown method call]]</ol></td></tr>
<tr><td>DavidMcCabe</td><td><ol><li>Task: [[Send_an_unknown_method_call|Send an unknown method call]]</ol></td></tr>
<tr><td>Daxim</td><td><ol><li>Task: [[100_doors|100 doors]]</li><li>Task: [[FizzBuzz|FizzBuzz]]</li><li>Task: [[HTTPS/Authenticated|HTTPS/Authenticated]]</li><li>Task: [[OpenGL|OpenGL]]</ol></td></tr>
<tr><td>Daxim</td><td><ol><li>Task: [[100_doors|100 doors]]</li><li>Task: [[100_doors|100 doors]]</li><li>Task: [[FizzBuzz|FizzBuzz]]</li><li>Task: [[HTTPS/Authenticated|HTTPS/Authenticated]]</li><li>Task: [[OpenGL|OpenGL]]</ol></td></tr>
<tr><td>Dbohdan</td><td><ol><li>Task: [[2048|2048]]</li><li>Task: [[FTP|FTP]]</li><li>Task: [[Retrieve_and_search_chat_history|Retrieve and search chat history]]</ol></td></tr>
<tr><td>Dbohdan</td><td><ol><li>Task: [[2048|2048]]</li><li>Task: [[FTP|FTP]]</li><li>Task: [[Retrieve_and_search_chat_history|Retrieve and search chat history]]</ol></td></tr>
<tr><td>Dgamey</td><td><ol><li>Task: [[Deepcopy|Deepcopy]]</li><li>Task: [[Galton_box_animation|Galton box animation]]</li><li>Task: [[Longest_string_challenge|Longest string challenge]]</li><li>Task: [[MD5/Implementation|MD5/Implementation]]</li><li>Task: [[Sierpinski_triangle/Graphical|Sierpinski triangle/Graphical]]</li><li>Task: [[State_name_puzzle|State name puzzle]]</ol></td></tr>
<tr><td>Dgamey</td><td><ol><li>Task: [[Deepcopy|Deepcopy]]</li><li>Task: [[Galton_box_animation|Galton box animation]]</li><li>Task: [[Longest_string_challenge|Longest string challenge]]</li><li>Task: [[MD5/Implementation|MD5/Implementation]]</li><li>Task: [[Sierpinski_triangle/Graphical|Sierpinski triangle/Graphical]]</li><li>Task: [[State_name_puzzle|State name puzzle]]</ol></td></tr>
Line 224: Line 127:
<tr><td>Farter</td><td><ol><li>Draft: [[Tetris|Tetris]]</ol></td></tr>
<tr><td>Farter</td><td><ol><li>Draft: [[Tetris|Tetris]]</ol></td></tr>
<tr><td>Francogrex</td><td><ol><li>Task: [[Hash_join|Hash join]]</li><li>Task: [[Machine_code|Machine code]]</ol></td></tr>
<tr><td>Francogrex</td><td><ol><li>Task: [[Hash_join|Hash join]]</li><li>Task: [[Machine_code|Machine code]]</ol></td></tr>
<tr><td>Fwend</td><td><ol><li>Task: [[Archimedean_spiral|Archimedean spiral]]</li><li>Task: [[Barnsley_fern|Barnsley fern]]</li><li>Task: [[Best_shuffle|Best shuffle]]</li><li>Task: [[Chaos_game|Chaos game]]</li><li>Task: [[Julia_set|Julia set]]</li><li>Task: [[Magic_squares_of_doubly_even_order|Magic squares of doubly even order]]</li><li>Task: [[Magic_squares_of_singly_even_order|Magic squares of singly even order]]</li><li>Draft: [[Penrose_tiling|Penrose tiling]]</li><li>Task: [[Pentagram|Pentagram]]</li><li>Draft: [[Pentomino_tiling|Pentomino tiling]]</li><li>Draft: [[Perceptron|Perceptron]]</li><li>Task: [[Plasma_effect|Plasma effect]]</li><li>Task: [[Polyspiral|Polyspiral]]</li><li>Task: [[Semordnilap|Semordnilap]]</li><li>Task: [[Set_puzzle|Set puzzle]]</li><li>Task: [[Sierpinski_pentagon|Sierpinski pentagon]]</li><li>Task: [[Superellipse|Superellipse]]</li><li>Task: [[Temperature_conversion|Temperature conversion]]</li><li>Task: [[Vampire_number|Vampire number]]</li><li>Draft: [[Word_search|Word search]]</ol></td></tr>
<tr><td>Fwend</td><td><ol><li>Task: [[Archimedean_spiral|Archimedean spiral]]</li><li>Task: [[Barnsley_fern|Barnsley fern]]</li><li>Task: [[Best_shuffle|Best shuffle]]</li><li>Task: [[Chaos_game|Chaos game]]</li><li>Task: [[Julia_set|Julia set]]</li><li>Task: [[Magic_squares_of_doubly_even_order|Magic squares of doubly even order]]</li><li>Task: [[Magic_squares_of_singly_even_order|Magic squares of singly even order]]</li><li>Draft: [[Penrose_tiling|Penrose tiling]]</li><li>Task: [[Pentagram|Pentagram]]</li><li>Draft: [[Pentomino_tiling|Pentomino tiling]]</li><li>Draft: [[Perceptron|Perceptron]]</li><li>Task: [[Plasma_effect|Plasma effect]]</li><li>Task: [[Polyspiral|Polyspiral]]</li><li>Task: [[Semordnilap|Semordnilap]]</li><li>Task: [[Set_puzzle|Set puzzle]]</li><li>Task: [[Sierpinski_pentagon|Sierpinski pentagon]]</li><li>Task: [[Superellipse|Superellipse]]</li><li>Task: [[Temperature_conversion|Temperature conversion]]</li><li>Task: [[Vampire_number|Vampire number]]</li><li>Task: [[Word_search|Word search]]</ol></td></tr>
<tr><td>G.Brougnard</td><td><ol><li>Draft: [[Addition_chains|Addition chains]]</li><li>Draft: [[Cipolla%27s_algorithm|Cipolla's algorithm]]</li><li>Draft: [[Prime_conspiracy|Prime conspiracy]]</li><li>Draft: [[Railway_circuit|Railway circuit]]</li><li>Draft: [[Simulated_annealing|Simulated annealing]]</li><li>Draft: [[Tonelli-Shanks_algorithm|Tonelli-Shanks algorithm]]</ol></td></tr>
<tr><td>G.Brougnard</td><td><ol><li>Draft: [[Addition_chains|Addition chains]]</li><li>Draft: [[Cipolla%27s_algorithm|Cipolla's algorithm]]</li><li>Draft: [[Prime_conspiracy|Prime conspiracy]]</li><li>Draft: [[Railway_circuit|Railway circuit]]</li><li>Draft: [[Simulated_annealing|Simulated annealing]]</li><li>Draft: [[Tonelli-Shanks_algorithm|Tonelli-Shanks algorithm]]</ol></td></tr>
<tr><td>Geka Sua</td><td><ol><li>Task: [[Compare_sorting_algorithms%27_performance|Compare sorting algorithms' performance]]</li><li>Task: [[Plot_coordinate_pairs|Plot coordinate pairs]]</li><li>Task: [[Polynomial_regression|Polynomial regression]]</li><li>Task: [[Time_a_function|Time a function]]</li><li>Task: [[Write_float_arrays_to_a_text_file|Write float arrays to a text file]]</ol></td></tr>
<tr><td>Geka Sua</td><td><ol><li>Task: [[Compare_sorting_algorithms%27_performance|Compare sorting algorithms' performance]]</li><li>Task: [[Plot_coordinate_pairs|Plot coordinate pairs]]</li><li>Task: [[Polynomial_regression|Polynomial regression]]</li><li>Task: [[Time_a_function|Time a function]]</li><li>Task: [[Write_float_arrays_to_a_text_file|Write float arrays to a text file]]</ol></td></tr>
<tr><td>Geoffhacker</td><td><ol><li>Draft: [[Longest_Common_Substring|Longest Common Substring]]</ol></td></tr>
<tr><td>Geoffhacker</td><td><ol><li>Draft: [[Longest_Common_Substring|Longest Common Substring]]</ol></td></tr>
<tr><td>Georg Peter</td><td><ol><li>Task: [[Integer_overflow|Integer overflow]]</ol></td></tr>
<tr><td>Georg Peter</td><td><ol><li>Task: [[Integer_overflow|Integer overflow]]</ol></td></tr>
<tr><td>Gerard Schildberger</td><td><ol><li>Task: [[4-rings_or_4-squares_puzzle|4-rings or 4-squares puzzle]]</li><li>Task: [[Bernoulli_numbers|Bernoulli numbers]]</li><li>Task: [[Commatizing_numbers|Commatizing numbers]]</li><li>Draft: [[Egyptian_fractions|Egyptian fractions]]</li><li>Task: [[Emirp_primes|Emirp primes]]</li><li>Task: [[Exponentiation_order|Exponentiation order]]</li><li>Task: [[Farey_sequence|Farey sequence]]</li><li>Task: [[Find_palindromic_numbers_in_both_binary_and_ternary_bases|Find palindromic numbers in both binary and ternary bases]]</li><li>Draft: [[Idiomatically_determine_all_the_characters_that_can_be_used_for_symbols|Idiomatically determine all the characters that can be used for symbols]]</li><li>Draft: [[Idiomatically_determine_all_the_lowercase_and_uppercase_letters|Idiomatically determine all the lowercase and uppercase letters]]</li><li>Draft: [[Knuth%27s_power_tree|Knuth's power tree]]</li><li>Task: [[Left_factorials|Left factorials]]</li><li>Draft: [[Leonardo_numbers|Leonardo numbers]]</li><li>Draft: [[Lucky_and_even_lucky_numbers|Lucky and even lucky numbers]]</li><li>Task: [[Magic_squares_of_odd_order|Magic squares of odd order]]</li><li>Task: [[Pernicious_numbers|Pernicious numbers]]</li><li>Task: [[Population_count|Population count]]</li><li>Task: [[Primorial_numbers|Primorial numbers]]</li><li>Task: [[Pythagorean_quadruples|Pythagorean quadruples]]</li><li>Task: [[Reverse_words_in_a_string|Reverse words in a string]]</li><li>Task: [[Sort_three_variables|Sort three variables]]</li><li>Task: [[Split_a_character_string_based_on_change_of_character|Split a character string based on change of character]]</li><li>Task: [[Sum_to_100|Sum to 100]]</li><li>Task: [[Taxicab_numbers|Taxicab numbers]]</li><li>Task: [[Ulam_spiral_(for_primes)|Ulam spiral (for primes)]]</li><li>Task: [[Zero_to_the_zero_power|Zero to the zero power]]</ol></td></tr>
<tr><td>Gerard Schildberger</td><td><ol><li>Task: [[4-rings_or_4-squares_puzzle|4-rings or 4-squares puzzle]]</li><li>Task: [[Bernoulli_numbers|Bernoulli numbers]]</li><li>Task: [[Commatizing_numbers|Commatizing numbers]]</li><li>Draft: [[Egyptian_fractions|Egyptian fractions]]</li><li>Task: [[Emirp_primes|Emirp primes]]</li><li>Task: [[Exponentiation_order|Exponentiation order]]</li><li>Task: [[Farey_sequence|Farey sequence]]</li><li>Task: [[Find_palindromic_numbers_in_both_binary_and_ternary_bases|Find palindromic numbers in both binary and ternary bases]]</li><li>Draft: [[Idiomatically_determine_all_the_characters_that_can_be_used_for_symbols|Idiomatically determine all the characters that can be used for symbols]]</li><li>Draft: [[Idiomatically_determine_all_the_lowercase_and_uppercase_letters|Idiomatically determine all the lowercase and uppercase letters]]</li><li>Draft: [[Knuth%27s_power_tree|Knuth's power tree]]</li><li>Task: [[Left_factorials|Left factorials]]</li><li>Draft: [[Leonardo_numbers|Leonardo numbers]]</li><li>Draft: [[Lucky_and_even_lucky_numbers|Lucky and even lucky numbers]]</li><li>Task: [[Magic_squares_of_odd_order|Magic squares of odd order]]</li><li>Task: [[Partition_an_integer_X_into_N_primes|Partition an integer X into N primes]]</li><li>Task: [[Pernicious_numbers|Pernicious numbers]]</li><li>Task: [[Population_count|Population count]]</li><li>Task: [[Primorial_numbers|Primorial numbers]]</li><li>Task: [[Pythagorean_quadruples|Pythagorean quadruples]]</li><li>Task: [[Reverse_words_in_a_string|Reverse words in a string]]</li><li>Task: [[Sort_three_variables|Sort three variables]]</li><li>Draft: [[Spelling_of_ordinal_numbers|Spelling of ordinal numbers]]</li><li>Task: [[Split_a_character_string_based_on_change_of_character|Split a character string based on change of character]]</li><li>Task: [[Sum_to_100|Sum to 100]]</li><li>Task: [[Taxicab_numbers|Taxicab numbers]]</li><li>Task: [[Ulam_spiral_(for_primes)|Ulam spiral (for primes)]]</li><li>Task: [[Zero_to_the_zero_power|Zero to the zero power]]</ol></td></tr>
<tr><td>Gfannes</td><td><ol><li>Task: [[Apply_a_callback_to_an_array|Apply a callback to an array]]</li><li>Task: [[Filter|Filter]]</li><li>Task: [[Hash_from_two_arrays|Hash from two arrays]]</li><li>Task: [[Remove_duplicate_elements|Remove duplicate elements]]</li><li>Task: [[XML/XPath|XML/XPath]]</ol></td></tr>
<tr><td>Gfannes</td><td><ol><li>Task: [[Apply_a_callback_to_an_array|Apply a callback to an array]]</li><li>Task: [[Filter|Filter]]</li><li>Task: [[Hash_from_two_arrays|Hash from two arrays]]</li><li>Task: [[Remove_duplicate_elements|Remove duplicate elements]]</li><li>Task: [[XML/XPath|XML/XPath]]</ol></td></tr>
<tr><td>Glennj</td><td><ol><li>Task: [[Boolean_values|Boolean values]]</li><li>Task: [[Date_manipulation|Date manipulation]]</li><li>Task: [[Doubly-linked_list/Traversal|Doubly-linked list/Traversal]]</li><li>Task: [[Loop_over_multiple_arrays_simultaneously|Loop over multiple arrays simultaneously]]</li><li>Task: [[Loops/For_with_a_specified_step|Loops/For with a specified step]]</li><li>Task: [[Repeat_a_string|Repeat a string]]</ol></td></tr>
<tr><td>Glennj</td><td><ol><li>Task: [[Boolean_values|Boolean values]]</li><li>Task: [[Date_manipulation|Date manipulation]]</li><li>Task: [[Doubly-linked_list/Traversal|Doubly-linked list/Traversal]]</li><li>Task: [[Loop_over_multiple_arrays_simultaneously|Loop over multiple arrays simultaneously]]</li><li>Task: [[Loops/For_with_a_specified_step|Loops/For with a specified step]]</li><li>Task: [[Repeat_a_string|Repeat a string]]</ol></td></tr>
Line 239: Line 142:
<tr><td>Grondilu</td><td><ol><li>Task: [[Bitcoin/address_validation|Bitcoin/address validation]]</li><li>Task: [[Bitcoin/public_point_to_address|Bitcoin/public point to address]]</li><li>Draft: [[Display_a_linear_combination|Display a linear combination]]</li><li>Draft: [[Elementary_cellular_automaton/Infinite_length|Elementary cellular automaton/Infinite length]]</li><li>Draft: [[Elementary_cellular_automaton/Random_Number_Generator|Elementary cellular automaton/Random Number Generator]]</li><li>Task: [[Elementary_cellular_automaton|Elementary cellular automaton]]</li><li>Draft: [[Elliptic_curve_arithmetic|Elliptic curve arithmetic]]</li><li>Draft: [[Entropy/Narcissist|Entropy/Narcissist]]</li><li>Task: [[FASTA_format|FASTA format]]</li><li>Task: [[Generate_Chess960_starting_position|Generate Chess960 starting position]]</li><li>Draft: [[Generate_random_chess_position|Generate random chess position]]</li><li>Draft: [[Geometric_algebra|Geometric algebra]]</li><li>Draft: [[Index_finite_lists_of_positive_integers|Index finite lists of positive integers]]</li><li>Draft: [[Levenshtein_distance/Alignment|Levenshtein distance/Alignment]]</li><li>Draft: [[Modular_arithmetic|Modular arithmetic]]</li><li>Task: [[Modular_inverse|Modular inverse]]</li><li>Draft: [[Orbital_elements|Orbital elements]]</li><li>Draft: [[Perlin_noise|Perlin noise]]</li><li>Task: [[SHA-256|SHA-256]]</li><li>Draft: [[Shortest_common_supersequence|Shortest common supersequence]]</li><li>Draft: [[Suffix_tree|Suffix tree]]</li><li>Task: [[Test_integerness|Test integerness]]</li><li>Task: [[Topic_variable|Topic variable]]</ol></td></tr>
<tr><td>Grondilu</td><td><ol><li>Task: [[Bitcoin/address_validation|Bitcoin/address validation]]</li><li>Task: [[Bitcoin/public_point_to_address|Bitcoin/public point to address]]</li><li>Draft: [[Display_a_linear_combination|Display a linear combination]]</li><li>Draft: [[Elementary_cellular_automaton/Infinite_length|Elementary cellular automaton/Infinite length]]</li><li>Draft: [[Elementary_cellular_automaton/Random_Number_Generator|Elementary cellular automaton/Random Number Generator]]</li><li>Task: [[Elementary_cellular_automaton|Elementary cellular automaton]]</li><li>Draft: [[Elliptic_curve_arithmetic|Elliptic curve arithmetic]]</li><li>Draft: [[Entropy/Narcissist|Entropy/Narcissist]]</li><li>Task: [[FASTA_format|FASTA format]]</li><li>Task: [[Generate_Chess960_starting_position|Generate Chess960 starting position]]</li><li>Draft: [[Generate_random_chess_position|Generate random chess position]]</li><li>Draft: [[Geometric_algebra|Geometric algebra]]</li><li>Draft: [[Index_finite_lists_of_positive_integers|Index finite lists of positive integers]]</li><li>Draft: [[Levenshtein_distance/Alignment|Levenshtein distance/Alignment]]</li><li>Draft: [[Modular_arithmetic|Modular arithmetic]]</li><li>Task: [[Modular_inverse|Modular inverse]]</li><li>Draft: [[Orbital_elements|Orbital elements]]</li><li>Draft: [[Perlin_noise|Perlin noise]]</li><li>Task: [[SHA-256|SHA-256]]</li><li>Draft: [[Shortest_common_supersequence|Shortest common supersequence]]</li><li>Draft: [[Suffix_tree|Suffix tree]]</li><li>Task: [[Test_integerness|Test integerness]]</li><li>Task: [[Topic_variable|Topic variable]]</ol></td></tr>
<tr><td>Guga360</td><td><ol><li>Task: [[Arrays|Arrays]]</li><li>Task: [[Execute_HQ9%2B|Execute HQ9+]]</li><li>Task: [[Image_noise|Image noise]]</li><li>Task: [[Rosetta_Code/Fix_code_tags|Rosetta Code/Fix code tags]]</li><li>Task: [[Rosetta_Code/Rank_languages_by_popularity|Rosetta Code/Rank languages by popularity]]</li><li>Task: [[Yahoo!_search_interface|Yahoo! search interface]]</ol></td></tr>
<tr><td>Guga360</td><td><ol><li>Task: [[Arrays|Arrays]]</li><li>Task: [[Execute_HQ9%2B|Execute HQ9+]]</li><li>Task: [[Image_noise|Image noise]]</li><li>Task: [[Rosetta_Code/Fix_code_tags|Rosetta Code/Fix code tags]]</li><li>Task: [[Rosetta_Code/Rank_languages_by_popularity|Rosetta Code/Rank languages by popularity]]</li><li>Task: [[Yahoo!_search_interface|Yahoo! search interface]]</ol></td></tr>
<tr><td>Hailholyghost</td><td><ol><li>Draft: [[Calculate_P-Value|Calculate P-Value]]</ol></td></tr>
<tr><td>Hajo</td><td><ol><li>Draft: [[One-time_pad|One-time pad]]</ol></td></tr>
<tr><td>Hajo</td><td><ol><li>Draft: [[One-time_pad|One-time pad]]</ol></td></tr>
<tr><td>Hamstar</td><td><ol><li>Task: [[Active_Directory/Connect|Active Directory/Connect]]</li><li>Task: [[Active_Directory/Search_for_a_user|Active Directory/Search for a user]]</ol></td></tr>
<tr><td>Hamstar</td><td><ol><li>Task: [[Active_Directory/Connect|Active Directory/Connect]]</li><li>Task: [[Active_Directory/Search_for_a_user|Active Directory/Search for a user]]</ol></td></tr>
Line 303: Line 207:
<tr><td>Pelci</td><td><ol><li>Task: [[Combinations_with_repetitions|Combinations with repetitions]]</li><li>Task: [[Knapsack_problem/0-1|Knapsack problem/0-1]]</li><li>Task: [[Knapsack_problem/Bounded|Knapsack problem/Bounded]]</li><li>Task: [[Knapsack_problem/Continuous|Knapsack problem/Continuous]]</li><li>Task: [[Permutations|Permutations]]</ol></td></tr>
<tr><td>Pelci</td><td><ol><li>Task: [[Combinations_with_repetitions|Combinations with repetitions]]</li><li>Task: [[Knapsack_problem/0-1|Knapsack problem/0-1]]</li><li>Task: [[Knapsack_problem/Bounded|Knapsack problem/Bounded]]</li><li>Task: [[Knapsack_problem/Continuous|Knapsack problem/Continuous]]</li><li>Task: [[Permutations|Permutations]]</ol></td></tr>
<tr><td>Pirho</td><td><ol><li>Task: [[Gaussian_elimination|Gaussian elimination]]</ol></td></tr>
<tr><td>Pirho</td><td><ol><li>Task: [[Gaussian_elimination|Gaussian elimination]]</ol></td></tr>
<tr><td>Pistacchio</td><td><ol><li>Draft: [[Hunt_The_Wumpus|Hunt The Wumpus]]</ol></td></tr>
<tr><td>Pistacchio</td><td><ol><li>Task: [[Hunt_The_Wumpus|Hunt The Wumpus]]</ol></td></tr>
<tr><td>Proton</td><td><ol><li>Draft: [[External_sort|External sort]]</ol></td></tr>
<tr><td>Proton</td><td><ol><li>Draft: [[External_sort|External sort]]</ol></td></tr>
<tr><td>Rainb</td><td><ol><li>Draft: [[Base64_encode_data|Base64 encode data]]</ol></td></tr>
<tr><td>Rainb</td><td><ol><li>Draft: [[Base64_encode_data|Base64 encode data]]</ol></td></tr>
Line 363: Line 267:
<tr><td>Zzo38</td><td><ol><li>Task: [[Thue-Morse|Thue-Morse]]</ol></td></tr>
<tr><td>Zzo38</td><td><ol><li>Task: [[Thue-Morse|Thue-Morse]]</ol></td></tr>
<tr><td>Русский</td><td><ol><li>Task: [[Main_step_of_GOST_28147-89|Main step of GOST 28147-89]]</li><li>Draft: [[Old_Russian_measure_of_length|Old Russian measure of length]]</li><li>Draft: [[Transportation_problem|Transportation problem]]</ol></td></tr>
<tr><td>Русский</td><td><ol><li>Task: [[Main_step_of_GOST_28147-89|Main step of GOST 28147-89]]</li><li>Draft: [[Old_Russian_measure_of_length|Old Russian measure of length]]</li><li>Draft: [[Transportation_problem|Transportation problem]]</ol></td></tr>
</table></div>
</table>
</div>

=={{header|Perl 6}}==
{{works with|Rakudo|2017.08}}

The pseudocode above is no longer really useful as the page format has changed. Rather than checking '''every''' edit to see if it was a change to the task description, we'll just assume the user that created the page is the task author. This isn't 100% accurate; a very few pages got renamed and recreated by someone other than the original author without preserving the history, so they are misreported (15 Puzzle Game for instance,) but is as good as it is likely to get without extensive manual intervention. Any further edits to the task description are not credited. As it is, we must still make ''thousands'' of requests and pound the server pretty hard. Checking '''every''' edit would make the task several of orders of magnitude more abusive of the server (and my internet connection.)

Each stage of the scraping process is saved to local files so it can be restarted without losing all your progress in the event of a timeout or error. If that happens though, you need to manually adjust where to restart the process.

<lang perl6>use HTTP::UserAgent;
use Gumbo;
use Sort::Naturally;

my $ua = HTTP::UserAgent.new;

for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category
{ # Get lists of Tasks & Draft Tasks
# last; # Uncomment to skip this step
my $page = "http://rosettacode.org/wiki/Category:$category";
my $html = $ua.get($page).content;
my $xmldoc = parse-html($html, :TAG<div>, :id<mw-pages>);
my @tasks = parse-html($xmldoc[0].Str, :TAG<li>).Str.comb( /'/wiki/' <-["]>+ / )>>.substr(6); #'"
my $f = open("./RC_{$category}.txt", :w) or die "$!\n";
$f.print( @tasks.join("\n") );
$f.close;
}

for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category
{ # Scrape info from each page.
# last; # Uncomment to skip this step
my @tasks = "./RC_{$category}.txt".IO.slurp.lines;

for @tasks -> $title {

my $ua = HTTP::UserAgent.new;
# Get the earliest edit
my $addr = "http://rosettacode.org/mw/index.php?title={$title}&dir=prev&limit=1&action=history";

my $html = $ua.get: $addr;

$html.content ~~ m|'<li><span class="mw-history-histlinks">' (.+?) '</ul>' |;

my $line = $0.lines.tail;
# Parse out the User name
$line ~~ m| 'title="User:' <-[>]>+? '>' (.+?) '</a>' |;

my $auth = $0;
# Oops, no user name, must be anonymous, get IP address instead
unless $auth {
$line ~~ m| '"mw-userlink mw-anonuserlink">' (.+?) '</a>' |;
$auth = $0;
}

# Parse out human readable title
$line ~~ m| '<a href="/mw/index.php?title=' $title '&amp;' .+? 'title="'(<-["]>+)'"' |; #"'

my $decoded = $0;

# report progress
say "$decoded: $auth";

# save it to a file
my $f = open("./RC_Authors.txt", :a) or die "$!\n";
$f.say( "[[$title|$decoded]]\t$category\t$auth" );
$f.close;

sleep 3; # Don't pound the server
}
}

# Read in saved author info
my %authors;
my ($cnt, $draftcnt, $taskcnt);
"./RC_Authors.txt".IO.slurp.lines.map: {
my ($task, $cat, $auth) = $_.split("\t");
$cnt++;
if $cat.contains('Draft') {
$cat = 'Draft:';
$draftcnt++;
} else {
$cat = 'Task: ';
$taskcnt++;
}
%authors{$auth}.push: "$cat $task";
};

# Dump an HTML table to a file
my $out = open("./RC_Authors.html", :w) or die "$!\n";

$out.say( '<table border="1" cellpadding="4"><tr><th colspan="2">As of ', Date.today, ' | Total: ',
$cnt, ' / Tasks: ', $taskcnt, ' / Draft Tasks: ', $draftcnt,
'<tr><th>User</th><th>Authored</th></tr>' );
for %authors.sort(*.key.&naturally) -> $a {
$out.print( '<tr><td>', $a.key, '</td><td><ol><li>' );
$out.print( $a.value.sort( *.substr(7) ).join('</li><li>') );
$out.say( '</ol></td></tr>' );
}
$out.say( '</table>' );
$out.close;</lang>

;Sample output

<table border="1"><tr><th colspan="2">As of 2017-09-04 | Total: 1059 / Tasks: 854 / Draft Tasks: 205<tr><th>User</th><th>Authored</th></tr>
<tr><td>2Powers</td><td><ol><li>Draft: [[Names_to_numbers|Names to numbers]]</li><li>Draft: [[Solving_coin_problems|Solving coin problems]]</ol></td></tr>
<tr><td>12.175.32.19</td><td><ol><li>Task: [[Soundex|Soundex]]</ol></td></tr>
<tr><td>12Me21</td><td><ol><li>Task: [[Draw_a_rotating_cube|Draw a rotating cube]]</ol></td></tr>

<tr><td colspan='2'><br/> Many rows omitted... <br/></td></tr>

<tr><td>Zorro1024</td><td><ol><li>Task: [[Perfect_shuffle|Perfect shuffle]]</li><li>Draft: [[Vector|Vector]]</ol></td></tr>
<tr><td>Zzo38</td><td><ol><li>Task: [[Thue-Morse|Thue-Morse]]</ol></td></tr>
<tr><td>Русский</td><td><ol><li>Task: [[Main_step_of_GOST_28147-89|Main step of GOST 28147-89]]</li><li>Draft: [[Old_Russian_measure_of_length|Old Russian measure of length]]</li><li>Draft: [[Transportation_problem|Transportation problem]]</ol></td></tr>
</table>

Revision as of 21:39, 10 September 2017

Rosetta Code/List authors of task descriptions is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.

In this task, the goal is to compile an authorship list for task descriptions. A pseudocode example (in imperative style) that should accomplish this is as follows:

<lang pseudocode>for each task page

 grab page source, discard everything after the first ==section==.

Cache as $previous. Note $author.

 for each revision
   grab page source, discard everything after first ==section==.

Cache as $previous2. Note $author2

   compare $previous2 to $previous. If different, record $author to $list.
   replace $previous with $previous2
   replace $author with $author2</lang>

The following resources for HTTP interface information for MediaWiki may prove to be useful:

Conversely, some languages have libraries which abstract these interfaces into language-native idioms. Use of these abstractions is perfectly fine.


Please DO NOT add a full output for each programming language; just show a representative sample. One full list is useful. Multiple full lists just use space and bandwidth.

As of 2017-09-10 | Total: 1064 / Tasks: 858 / Draft Tasks: 206
UserAuthored
2Powers
  1. Draft: Names to numbers
  2. Draft: Solving coin problems
12.175.32.19
  1. Task: Soundex
12Me21
  1. Task: Draw a rotating cube
64.131.185.25
  1. Task: Sierpinski carpet
  2. Task: Sierpinski triangle
66.120.226.84
  1. Task: Top rank per group
67.20.197.154
  1. Task: RSA code
68.38.195.134
  1. Task: Zig-zag matrix
68.175.31.239
  1. Task: SEDOLs
69.12.181.181
  1. Task: Random numbers
70.83.182.253
  1. Task: Check that file exists
  2. Task: Create a file
  3. Task: Delete a file
  4. Task: File modification time
  5. Task: File size
  6. Task: Rename a file
71.205.120.86
  1. Task: Function definition
74.56.102.15
  1. Task: Compound data type
  2. Task: Copy a string
  3. Task: Enumerations
  4. Task: Increment a numerical string
  5. Task: Polymorphism
  6. Task: Stack
74.74.225.216
  1. Task: Singly-linked list/Traversal
76.19.46.239
  1. Task: Non-decimal radices/Convert
76.91.63.71
  1. Task: Sorting algorithms/Heapsort
77.250.119.152
  1. Task: Haversine formula
78.35.107.83
  1. Task: Discordian date
  2. Task: Leap year
78.146.0.60
  1. Task: Narcissist
79.54.58.148
  1. Task: Paraffins
82.32.24.201
  1. Draft: Aspect Oriented Programming
83.104.248.190
  1. Task: Matrix multiplication
87.224.129.185
  1. Task: Canny edge detector
91.4.78.20
  1. Task: Ordered Partitions
96.20.64.30
  1. Task: Mandelbrot set
99.105.56.162
  1. Task: Levenshtein distance
137.195.250.2
  1. Task: Sorting algorithms/Bogosort
  2. Task: Sorting algorithms/Permutation sort
142.204.88.102
  1. Task: Create an HTML table
145.254.251.66
  1. Task: List comprehensions
145.254.251.95
  1. Task: Pattern matching
146.201.224.238
  1. Task: Reverse a string
155.192.0.234
  1. Task: Sorting algorithms/Strand sort
165.124.208.73
  1. Task: Pythagoras tree
171.65.33.13
  1. Task: Command-line arguments
195.33.114.129
  1. Task: Sorting algorithms/Shell sort
200.102.26.6
  1. Task: HTTP
201.67.232.39
  1. Task: Record sound
207.74.29.206
  1. Task: Window creation
209.63.105.137
  1. Task: Associative array/Creation
  2. Task: Fork
  3. Task: Table creation/Postal addresses
219.77.140.150
  1. Task: Factorial
Abu
  1. Task: Anonymous recursion
  2. Task: Chat server
  3. Draft: Chess player
  4. Task: Extend your language
  5. Task: First class environments
  6. Task: Function frequency
  7. Task: GUI component interaction
  8. Task: GUI enabling/disabling of controls
  9. Task: Maze generation
  10. Task: Maze solving
  11. Task: Morse code
  12. Task: Parallel calculations
  13. Task: Random number generator (device)
Adonis
  1. Task: Classes
  2. Task: Walk a directory/Non-recursively
  3. Task: XML/DOM serialization
Akshay
  1. Draft: Dijkstra's algorithm
AlainD
  1. Task: Fractran
  2. Task: URL parser
Alegend
  1. Task: Evaluate binomial coefficients
AlexLehm
  1. Task: Langton's ant
Aloisdg
  1. Draft: Diversity prediction theorem
  2. Draft: Munchausen numbers
  3. Draft: Sattolo cycle
  4. Draft: Two Sum
AnatolV
  1. Task: Kronecker product based fractals
  2. Task: Kronecker product
Avi
  1. Task: Cholesky decomposition
  2. Task: Element-wise operations
  3. Task: Euler method
  4. Task: LU decomposition
  5. Task: Numerical integration/Gauss-Legendre Quadrature
  6. Task: QR decomposition
  7. Task: UTF-8 encode and decode
Axtens
  1. Draft: Decision tables
  2. Task: Find limit of recursion
  3. Task: History variables
  4. Task: Last letter-first letter
  5. Task: Price fraction
  6. Task: Take notes on the command line
  7. Draft: Tasks without examples
Backupbrain
  1. Task: SOAP
Badmadevil
  1. Task: Pascal's triangle/Puzzle
  2. Task: Power set
Bcdady
  1. Task: Write to Windows event log
Bearophile
  1. Draft: ASCII art diagram converter
  2. Draft: Boids
  3. Draft: Dice game probabilities
  4. Draft: Free polyominoes enumeration
  5. Task: Generate lower case ASCII alphabet
  6. Task: Iterated digits squaring
  7. Task: Maximum triangle path sum
  8. Task: Nonogram solver
  9. Task: Sum and Product Puzzle
  10. Task: Total circles area
Binki
  1. Task: Write entire file
Bjartur
  1. Draft: Repeat
Bjrtr
  1. Task: Call an object method
BlaiseP
  1. Task: The ISAAC Cipher
Blue Prawn
  1. Task: Bitmap/Bézier curves/Cubic
  2. Task: Bitmap/Bézier curves/Quadratic
  3. Task: Bitmap/Bresenham's line algorithm
  4. Task: Bitmap/Midpoint circle algorithm
  5. Task: Bitmap/PPM conversion through a pipe
  6. Task: Bitmap/Write a PPM file
  7. Task: Bitmap
  8. Task: Catmull–Clark subdivision surface
  9. Draft: Check output device is a terminal
  10. Task: Equilibrium index
  11. Task: Image convolution
  12. Task: LZW compression
  13. Task: Last Friday of each month
  14. Task: Median filter
  15. Task: N-queens problem
  16. Task: Percentage difference between images
  17. Draft: Process SMIL directives in XML data
  18. Task: Shell one-liner
  19. Task: Window creation/X11
Bob9000
  1. Task: SQL-based authentication
  2. Task: Sort an integer array
  3. Task: Sort using a custom comparator
BR
  1. Task: Sorting algorithms/Comb sort
Bubbajim3
  1. Task: MAC Vendor Lookup
Bugmenot
  1. Task: Array length
  2. Draft: Type detection
Bugmenot2
  1. Task: Search a list of records
Bukzor
  1. Task: Make directory path
Casebash
  1. Task: String matching
Cblp
  1. Task: Stream Merge
Ce
  1. Task: Arithmetic/Integer
  2. Task: Comments
  3. Task: Constrained genericity
  4. Task: Create a two-dimensional array at runtime
  5. Task: Infinity
  6. Task: Inheritance/Multiple
  7. Task: Integer comparison
  8. Task: Logical operations
  9. Task: Loops/Downward for
  10. Task: Loops/N plus one half
  11. Task: Pointers and references
  12. Task: Tree traversal
Cook
  1. Task: Literals/String
  2. Task: Special characters
Created by: X
  1. Task: Determine if a string is numeric
CRGreathouse
  1. Task: Literals/Floating point
  2. Task: Matrix arithmetic
  3. Task: Rosetta Code/Find bare lang tags
  4. Draft: Untrusted environment
Crossrodas1112
  1. Draft: Word break problem
Cyberjacob
  1. Draft: IRC gateway
D2
  1. Task: Towers of Hanoi
Damian.nikodem
  1. Task: Sockets
DanBron
  1. Task: Host introspection
  2. Task: K-means++ clustering
Danprager
  1. Draft: Deming's Funnel
DataWraith
  1. Task: Run-length encoding
Davewhipp
  1. Task: Constrained random points on a circle
Davgot
  1. Task: Chinese remainder theorem
DavidMcCabe
  1. Task: Send an unknown method call
Daxim
  1. Task: 100 doors
  2. Task: 100 doors
  3. Task: FizzBuzz
  4. Task: HTTPS/Authenticated
  5. Task: OpenGL
Dbohdan
  1. Task: 2048
  2. Task: FTP
  3. Task: Retrieve and search chat history
Dgamey
  1. Task: Deepcopy
  2. Task: Galton box animation
  3. Task: Longest string challenge
  4. Task: MD5/Implementation
  5. Task: Sierpinski triangle/Graphical
  6. Task: State name puzzle
Dingowolf
  1. Draft: Create an object/Native demonstration
  2. Task: Happy numbers
  3. Task: Strip block comments
  4. Task: Variable-length quantity
Dirkt
  1. Task: Formal power series
  2. Task: Non-continuous subsequences
  3. Task: Parametric polymorphism
Dkf
  1. Task: Accumulator factory
  2. Task: Animate a pendulum
  3. Task: Animation
  4. Task: Averages/Median
  5. Task: Averages/Mode
  6. Task: Cumulative standard deviation
  7. Task: Echo server
  8. Task: Generator/Exponential
  9. Task: HTTPS/Client-authenticated
  10. Task: HTTPS
  11. Task: Hough transform
  12. Task: Named parameters
  13. Task: Non-decimal radices/Input
  14. Task: Respond to an unknown method call
  15. Draft: Rosetta Code/Tasks sorted by average lines of code
  16. Task: Speech synthesis
  17. Task: Stack traces
  18. Task: Sutherland-Hodgman polygon clipping
  19. Task: Terminal control/Ringing the terminal bell
  20. Task: Verify distribution uniformity/Chi-squared test
  21. Task: Wireworld
Dmitry-kazakov
  1. Task: Abstract type
  2. Task: Active object
  3. Task: Arena storage pool
  4. Task: Bitmap/Histogram
  5. Task: Bitmap/Read a PPM file
  6. Task: Call a foreign-language function
  7. Task: Checkpoint synchronization
  8. Task: Create an object at a given address
  9. Task: Dining philosophers
  10. Task: Events
  11. Task: Grayscale image
  12. Task: Loops/Nested
  13. Task: Polymorphic copy
  14. Task: Rendezvous
  15. Task: Safe addition
  16. Task: Use another language to call a function
Drea
  1. Task: Sieve of Eratosthenes
DSblizzard
  1. Task: Multisplit
Dstaley
  1. Task: JortSort
Dstaudacher
  1. Task: Create a file on magnetic tape
Dubs
  1. Draft: Solve a Rubik's Cube
Dukzcry
  1. Task: AVL tree
Dwarring
  1. Draft: Poker hand analyser
Ed Davis
  1. Task: Compiler/AST interpreter
  2. Task: Compiler/code generator
  3. Task: Compiler/lexical analyzer
  4. Task: Compiler/syntax analyzer
  5. Task: Compiler/virtual machine interpreter
Edmund
  1. Task: Babbage problem
  2. Draft: French Republican calendar
Emarch
  1. Draft: I.Q. Puzzle
EMBee
  1. Draft: Find URI in text
  2. Draft: Make a backup file
  3. Task: Order two numerical lists
  4. Draft: Readline interface
  5. Draft: Rosetta Code/Run examples
  6. Draft: Run as a daemon or service
  7. Task: S-Expressions
  8. Task: Simple database
  9. Draft: Text to HTML
Emeraude
  1. Task: Floyd-Warshall algorithm
Epsilon
  1. Task: Arithmetic evaluation
  2. Draft: Proof
Eriksiers
  1. Task: Sorting algorithms/Pancake sort
Fabian
  1. Task: Collections
Farter
  1. Draft: Tetris
Francogrex
  1. Task: Hash join
  2. Task: Machine code
Fwend
  1. Task: Archimedean spiral
  2. Task: Barnsley fern
  3. Task: Best shuffle
  4. Task: Chaos game
  5. Task: Julia set
  6. Task: Magic squares of doubly even order
  7. Task: Magic squares of singly even order
  8. Draft: Penrose tiling
  9. Task: Pentagram
  10. Draft: Pentomino tiling
  11. Draft: Perceptron
  12. Task: Plasma effect
  13. Task: Polyspiral
  14. Task: Semordnilap
  15. Task: Set puzzle
  16. Task: Sierpinski pentagon
  17. Task: Superellipse
  18. Task: Temperature conversion
  19. Task: Vampire number
  20. Task: Word search
G.Brougnard
  1. Draft: Addition chains
  2. Draft: Cipolla's algorithm
  3. Draft: Prime conspiracy
  4. Draft: Railway circuit
  5. Draft: Simulated annealing
  6. Draft: Tonelli-Shanks algorithm
Geka Sua
  1. Task: Compare sorting algorithms' performance
  2. Task: Plot coordinate pairs
  3. Task: Polynomial regression
  4. Task: Time a function
  5. Task: Write float arrays to a text file
Geoffhacker
  1. Draft: Longest Common Substring
Georg Peter
  1. Task: Integer overflow
Gerard Schildberger
  1. Task: 4-rings or 4-squares puzzle
  2. Task: Bernoulli numbers
  3. Task: Commatizing numbers
  4. Draft: Egyptian fractions
  5. Task: Emirp primes
  6. Task: Exponentiation order
  7. Task: Farey sequence
  8. Task: Find palindromic numbers in both binary and ternary bases
  9. Draft: Idiomatically determine all the characters that can be used for symbols
  10. Draft: Idiomatically determine all the lowercase and uppercase letters
  11. Draft: Knuth's power tree
  12. Task: Left factorials
  13. Draft: Leonardo numbers
  14. Draft: Lucky and even lucky numbers
  15. Task: Magic squares of odd order
  16. Task: Partition an integer X into N primes
  17. Task: Pernicious numbers
  18. Task: Population count
  19. Task: Primorial numbers
  20. Task: Pythagorean quadruples
  21. Task: Reverse words in a string
  22. Task: Sort three variables
  23. Draft: Spelling of ordinal numbers
  24. Task: Split a character string based on change of character
  25. Task: Sum to 100
  26. Task: Taxicab numbers
  27. Task: Ulam spiral (for primes)
  28. Task: Zero to the zero power
Gfannes
  1. Task: Apply a callback to an array
  2. Task: Filter
  3. Task: Hash from two arrays
  4. Task: Remove duplicate elements
  5. Task: XML/XPath
Glennj
  1. Task: Boolean values
  2. Task: Date manipulation
  3. Task: Doubly-linked list/Traversal
  4. Task: Loop over multiple arrays simultaneously
  5. Task: Loops/For with a specified step
  6. Task: Repeat a string
GlitchMr
  1. Draft: Check input device is a terminal
  2. Draft: Damm algorithm
Gn4v3
  1. Task: Greatest subsequential sum
GozzoMan
  1. Task: Higher-order functions
Grauenwolf
  1. Task: Determine if only one instance is running
  2. Task: Doubly-linked list/Definition
  3. Task: XML/Input
  4. Task: XML/Output
GreatPalash
  1. Draft: Substitution Cipher
Grondilu
  1. Task: Bitcoin/address validation
  2. Task: Bitcoin/public point to address
  3. Draft: Display a linear combination
  4. Draft: Elementary cellular automaton/Infinite length
  5. Draft: Elementary cellular automaton/Random Number Generator
  6. Task: Elementary cellular automaton
  7. Draft: Elliptic curve arithmetic
  8. Draft: Entropy/Narcissist
  9. Task: FASTA format
  10. Task: Generate Chess960 starting position
  11. Draft: Generate random chess position
  12. Draft: Geometric algebra
  13. Draft: Index finite lists of positive integers
  14. Draft: Levenshtein distance/Alignment
  15. Draft: Modular arithmetic
  16. Task: Modular inverse
  17. Draft: Orbital elements
  18. Draft: Perlin noise
  19. Task: SHA-256
  20. Draft: Shortest common supersequence
  21. Draft: Suffix tree
  22. Task: Test integerness
  23. Task: Topic variable
Guga360
  1. Task: Arrays
  2. Task: Execute HQ9+
  3. Task: Image noise
  4. Task: Rosetta Code/Fix code tags
  5. Task: Rosetta Code/Rank languages by popularity
  6. Task: Yahoo! search interface
Hailholyghost
  1. Draft: Calculate P-Value
Hajo
  1. Draft: One-time pad
Hamstar
  1. Task: Active Directory/Connect
  2. Task: Active Directory/Search for a user
Hansoft
  1. Draft: Sorting Algorithms/Circle Sort
Hippyman
  1. Draft: Color wheel
Hircus
  1. Task: Stair-climbing puzzle
Hout
  1. Task: Cartesian product of two or more lists
  2. Task: Water collected between towers
Hsnarula
  1. Task: Find the last Sunday of each month
IanOsgood
  1. Task: Memory allocation
  2. Task: Sorting algorithms/Quicksort
Infogulch
  1. Task: Sudoku
Isrunt
  1. Draft: File extension is in extensions list
Jfd34
  1. Task: The Twelve Days of Christmas
Jgfoot
  1. Task: Parallel Brute Force
Jhuni
  1. Task: Enforced immutability
Jimbojw
  1. Task: Date format
JimD
  1. Task: Rot-13
  2. Task: Secure temporary file
JimTheriot
  1. Draft: Chebyshev coefficients
  2. Draft: Particle Swarm Optimization
  3. Draft: Weather Routing
Jking
  1. Task: ABC Problem
Jrslepak
  1. Task: Doubly-linked list/Element definition
  2. Task: Doubly-linked list/Element insertion
Jwilkins
  1. Task: Add a variable to a class instance at runtime
Kentros
  1. Draft: Word count
Kernigh
  1. Task: Caesar cipher
  2. Task: Conjugate transpose
  3. Task: DNS query
  4. Task: Deal cards for FreeCell
  5. Task: Empty directory
  6. Task: Even or odd
  7. Task: Identity matrix
  8. Task: Jump anywhere
  9. Task: Least common multiple
  10. Task: Letter frequency
  11. Task: Linear congruential generator
  12. Task: MD4
  13. Task: Modular exponentiation
  14. Task: RIPEMD-160
  15. Task: Return multiple values
  16. Task: SHA-1
  17. Task: Set
  18. Task: Subtractive generator
Kevin Reid
  1. Task: Atomic updates
  2. Task: Distributed programming
  3. Task: Multiple distinct objects
  4. Task: Optional parameters
  5. Task: Play recorded sounds
  6. Task: Queue/Usage
  7. Task: Read entire file
  8. Task: Rosetta Code/Find unimplemented tasks
  9. Task: Runtime evaluation/In an environment
  10. Task: Runtime evaluation
  11. Task: Stem-and-leaf plot
  12. Task: Variables
Kipb
  1. Task: Formatted numeric output
  2. Task: String case
Kwhitefoot
  1. Draft: Singly-linked list/Element removal
Kzh
  1. Task: Catamorphism
Lambertdw
  1. Task: Sorting algorithms/Radix sort
Learneroo
  1. Draft: Input/Output for Lines of Text
  2. Draft: Input/Output for Pairs of Numbers
Ledrug
  1. Task: Balanced ternary
  2. Task: Color quantization
  3. Task: Count the coins
  4. Task: Cut a rectangle
  5. Task: Draw a clock
  6. Draft: IPC via named pipe
  7. Task: Josephus problem
  8. Draft: List rooted trees
  9. Task: Odd word problem
  10. Task: Priority queue
  11. Task: Pythagorean triples
  12. Task: Resistor mesh
  13. Task: Set of real numbers
  14. Task: Statistics/Basic
  15. Task: Statistics/Normal distribution
  16. Task: Unicode strings
  17. Task: Visualize a tree
Legrady
  1. Draft: File size distribution
Lrq3000
  1. Draft: Polynomial synthetic division
Lupus
  1. Task: Factors of a Mersenne number
  2. Task: Roots of a quadratic function
  3. Task: Sorting algorithms/Selection sort
MagiMaster
  1. Task: Mad Libs
  2. Draft: Morpion solitaire
  3. Draft: Recursive descent parser generator
  4. Task: Sokoban
  5. Task: Straddling checkerboard
  6. Task: Vigenère cipher/Cryptanalysis
  7. Task: Vigenère cipher
Magnus
  1. Draft: Finite state machine
Mahaju
  1. Draft: Montgomery reduction
MainframeFossil
  1. Task: Get system command output
Markhobley
  1. Draft: Audio frequency generator
  2. Task: Binary digits
  3. Task: Call a function
  4. Task: Case-sensitivity of identifiers
  5. Draft: Code segment unload
  6. Task: Colour bars/Display
  7. Task: Colour pinstripe/Display
  8. Task: Colour pinstripe/Printer
  9. Task: Count in octal
  10. Task: Death Star
  11. Task: Draw a cuboid
  12. Task: Draw a sphere
  13. Task: Empty string
  14. Task: Function prototype
  15. Task: GUI/Maximum window dimensions
  16. Task: Globally replace text in several files
  17. Task: Greyscale bars/Display
  18. Task: Guess the number
  19. Task: Hello world/Line printer
  20. Task: Hello world/Newline omission
  21. Task: Here document
  22. Task: Honeycombs
  23. Task: Include a file
  24. Task: Inverted syntax
  25. Task: Joystick position
  26. Task: Keyboard input/Flush the keyboard buffer
  27. Task: Keyboard input/Keypress check
  28. Task: Keyboard input/Obtain a Y or N response
  29. Task: Metronome
  30. Draft: Musical scale
  31. Task: Nautical bell
  32. Task: Pinstripe/Display
  33. Task: Pinstripe/Printer
  34. Task: Pi
  35. Task: Pragmatic directives
  36. Task: Read a configuration file
  37. Draft: Read a file character by character/UTF8
  38. Task: Read a file line by line
  39. Task: Read a specific line from a file
  40. Task: Remove lines from a file
  41. Task: Scope/Function names and labels
  42. Task: Special variables
  43. Task: Start from a main routine
  44. Task: String comparison
  45. Task: Strip a set of characters from a string
  46. Task: Strip comments from a string
  47. Task: Strip control codes and extended characters from a string
  48. Task: Strip whitespace from a string/Top and tail
  49. Task: Substring/Top and tail
  50. Task: Terminal control/Clear the screen
  51. Task: Terminal control/Coloured text
  52. Task: Terminal control/Cursor movement
  53. Task: Terminal control/Cursor positioning
  54. Task: Terminal control/Dimensions
  55. Task: Terminal control/Display an extended character
  56. Task: Terminal control/Hiding the cursor
  57. Task: Terminal control/Inverse video
  58. Task: Terminal control/Positional read
  59. Task: Terminal control/Preserve screen
  60. Draft: Terminal control/Restricted width positional input/No wrapping
  61. Draft: Terminal control/Restricted width positional input/With wrapping
  62. Task: Terminal control/Unicode output
  63. Task: Truncate a file
  64. Task: URL decoding
  65. Task: URL encoding
  66. Task: Update a configuration file
  67. Draft: Using a Speech engine to highlight words
  68. Task: Video display modes
  69. Draft: Waveform analysis/Doh ray me
  70. Draft: Waveform analysis/Top and tail
  71. Task: Write language name in 3D ASCII
Markjreed
  1. Task: Chinese zodiac
  2. Task: Knight's tour
  3. Task: Subleq
Marshmallows
  1. Task: Amb
  2. Task: Loops/For
  3. Task: Loops/Infinite
Masak
  1. Task: Average loop length
  2. Task: Balanced brackets
Mathaddict
  1. Task: A+B
Matthias
  1. Task: Dragon curve
Mbishop
  1. Task: Knuth shuffle
Mcandre
  1. Draft: Modulinos
  2. Draft: Multiline shebang
  3. Draft: Parse command-line arguments
  4. Task: Pick random element
  5. Task: Program name
MichaelChrisco
  1. Task: Sorting algorithms/Bead sort
Mikachu
  1. Task: Roman numerals/Decode
Mikymaione
  1. Draft: Kosaraju
  2. Draft: Tarjan
Mischief
  1. Draft: Sorting algorithms/Cycle sort
Mogmios
  1. Draft: VList
Mroman
  1. Task: Entropy
Mwn3d
  1. Task: 99 Bottles of Beer
  2. Task: Ackermann function
  3. Task: Arithmetic/Complex
  4. Task: Array concatenation
  5. Task: Assertions
  6. Task: Binary search
  7. Task: Bitwise operations
  8. Draft: Card shuffles
  9. Task: Catalan numbers
  10. Task: Detect division by zero
  11. Task: Documentation
  12. Task: Execute SNUSP
  13. Task: Fibonacci sequence
  14. Task: Five weekends
  15. Task: Gray code
  16. Task: Hello world/Standard error
  17. Task: Huffman coding
  18. Task: Inheritance/Single
  19. Task: Input loop
  20. Task: Longest common subsequence
  21. Task: Loops/Break
  22. Task: Loops/Continue
  23. Task: Loops/Do-while
  24. Task: Loops/Foreach
  25. Task: Loops/While
  26. Task: MD5
  27. Task: Monte Carlo methods
  28. Task: Null object
  29. Task: Numerical integration
  30. Task: Parametrized SQL statement
  31. Task: Pascal's triangle
  32. Task: Perfect numbers
  33. Task: Primality by trial division
  34. Task: Prime decomposition
  35. Task: Program termination
  36. Task: Quine
  37. Task: Real constants and functions
  38. Task: Reduced row echelon form
  39. Task: Rosetta Code/Count examples
  40. Task: Scope modifiers
  41. Task: Show the epoch
  42. Task: Sleep
  43. Task: Sorting algorithms/Cocktail sort
  44. Task: Sorting algorithms/Insertion sort
  45. Task: Sorting algorithms/Merge sort
  46. Task: Sorting algorithms/Stooge sort
  47. Task: String concatenation
  48. Task: String length
  49. Task: Sum and product of an array
  50. Task: System time
  51. Task: Trigonometric functions
  52. Task: User input/Graphical
  53. Task: User input/Text
  54. Task: Variadic function
  55. Task: World Cup group stage
Namanyayg
  1. Draft: Using the Meetup.com API
NevilleDNZ
  1. Draft: Addition-chain exponentiation
  2. Task: Append a record to the end of a text file
  3. Task: Arithmetic/Rational
  4. Draft: Banker's algorithm
  5. Draft: Birthday problem
  6. Task: Calendar - for "REAL" programmers
  7. Task: Calendar
  8. Task: Combinations and permutations
  9. Task: Currying
  10. Task: Exponentiation operator
  11. Draft: Find first and last set bit of a long integer
  12. Draft: Generalised floating point addition
  13. Draft: Generalised floating point multiplication
  14. Task: Greatest common divisor
  15. Task: Hello world/Graphical
  16. Task: Holidays related to Easter
  17. Task: Horizontal sundial calculations
  18. Draft: Implicit type conversion
  19. Task: Jensen's Device
  20. Draft: Just in time processing on a character stream
  21. Task: Lucas-Lehmer test
  22. Task: Man or boy test
  23. Task: Matrix-exponentiation operator
  24. Task: Matrix transposition
  25. Task: Multiplication tables
  26. Task: Naming conventions
  27. Draft: Native shebang
  28. Task: Number names
  29. Task: Operator precedence
  30. Draft: Permutations with repetitions
  31. Draft: Reverse the gender of a string
  32. Task: Search a list
  33. Draft: Sorting algorithms/Tree sort on a linked list
  34. Task: String append
  35. Task: String prepend
  36. Task: Ternary logic
  37. Task: Thiele's interpolation formula
  38. Draft: Unicode polynomial equation
  39. Draft: User defined pipe and redirection operators
Nigel Galloway
  1. Task: 9 billion names of God the integer
  2. Task: Arithmetic-geometric mean/Calculate Pi
  3. Task: Arithmetic-geometric mean
  4. Draft: Blackjack strategy
  5. Task: Carmichael 3 strong pseudoprimes
  6. Task: Casting out nines
  7. Task: Catalan numbers/Pascal's triangle
  8. Draft: Combinations with repetitions/Square Digit Chain
  9. Task: Continued fraction/Arithmetic/Construct from rational number
  10. Draft: Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N)
  11. Draft: Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N1, Contined Fraction N2)
  12. Task: Continued fraction
  13. Task: Digital root
  14. Task: Fibonacci word/fractal
  15. Task: Fibonacci word
  16. Task: Find largest left truncatable prime in a given base
  17. Draft: Ramsey's theorem
  18. Task: Solve a Hidato puzzle
  19. Task: Solve a Holy Knight's tour
  20. Task: Solve a Hopido puzzle
  21. Task: Solve a Numbrix puzzle
  22. Task: Sum digits of an integer
  23. Task: Textonyms
  24. Draft: Ukkonen’s Suffix Tree Construction
  25. Task: Vogel's approximation method
  26. Task: Zeckendorf arithmetic
Nirs
  1. Task: Delegates
  2. Task: Queue/Definition
Old man
  1. Task: Primes - allocate descendants to their ancestors
Oligomous
  1. Task: Factors of an integer
  2. Task: Substring
Outis
  1. Task: Reflection/Get source
  2. Task: Reflection/List methods
  3. Draft: Reflection/List methods
  4. Task: Reflection/List properties
P3cox
  1. Draft: Fibonacci heap
Paddy3118
  1. Task: 24 game/Solve
  2. Task: 24 game
  3. Task: AKS test for primes
  4. Task: Abundant, deficient and perfect number classifications
  5. Task: Align columns
  6. Task: Aliquot sequence classifications
  7. Task: Almost prime
  8. Task: Amicable pairs
  9. Task: Anagrams/Deranged anagrams
  10. Task: Anagrams
  11. Task: Arbitrary-precision integers (included)
  12. Task: Averages/Mean angle
  13. Task: Averages/Mean time of day
  14. Task: Averages/Pythagorean means
  15. Task: Averages/Root mean square
  16. Task: Averages/Simple moving average
  17. Task: Box the compass
  18. Task: Break OO privacy
  19. Task: Bulls and cows/Player
  20. Task: Bulls and cows
  21. Task: CSV to HTML translation
  22. Task: Circles of given radius through two points
  23. Task: Comma quibbling
  24. Task: Conway's Game of Life
  25. Task: Day of the week
  26. Task: Digital root/Multiplicative digital root
  27. Task: Dinesman's multiple-dwelling problem
  28. Task: Dot product
  29. Task: Dutch national flag problem
  30. Task: Egyptian division
  31. Task: Ethiopian multiplication
  32. Task: Euler's sum of powers conjecture
  33. Task: Evolutionary algorithm
  34. Task: Exceptions/Catch an exception thrown in a nested call
  35. Task: Executable library
  36. Task: Extensible prime generator
  37. Task: Extreme floating point values
  38. Task: Fibonacci n-step number sequences
  39. Task: Find common directory path
  40. Task: First-class functions/Use numbers analogously
  41. Task: First-class functions
  42. Task: Flatten a list
  43. Task: Flipping bits game
  44. Task: Floyd's triangle
  45. Task: Function composition
  46. Draft: Functional coverage tree
  47. Task: Guess the number/With feedback (player)
  48. Task: Guess the number/With feedback
  49. Task: Hailstone sequence
  50. Task: Hamming numbers
  51. Task: Harshad or Niven series
  52. Task: Hello world/Newbie
  53. Task: Heronian triangles
  54. Task: Hickerson series of almost integers
  55. Task: Hofstadter-Conway $10,000 sequence
  56. Task: Hofstadter Figure-Figure sequences
  57. Task: Hofstadter Q sequence
  58. Task: Horner's rule for polynomial evaluation
  59. Task: I before E except after C
  60. Task: Interactive programming
  61. Draft: Kahan summation
  62. Task: Kaprekar numbers
  63. Task: Knapsack problem/Unbounded
  64. Task: Knuth's algorithm S
  65. Task: Largest int from concatenated ints
  66. Task: Literals/Integer
  67. Task: Longest increasing subsequence
  68. Task: Look-and-say sequence
  69. Task: Ludic numbers
  70. Task: Luhn test of credit card numbers
  71. Task: Lychrel numbers
  72. Task: Menu
  73. Task: Middle three digits
  74. Task: Minesweeper game
  75. Task: Monty Hall problem
  76. Task: Move-to-front algorithm
  77. Draft: Multi-dimensional array
  78. Task: Multifactorial
  79. Task: Mutual recursion
  80. Task: N'th
  81. Task: Narcissistic decimal number
  82. Task: Natural sorting
  83. Task: Non-decimal radices/Output
  84. Task: Nonoblock
  85. Task: Number reversal game
  86. Task: Numeric error propagation
  87. Task: One-dimensional cellular automata
  88. Task: One of n lines in a file
  89. Task: Order disjoint list items
  90. Task: Ordered words
  91. Task: Pangram checker
  92. Task: Parsing/RPN calculator algorithm
  93. Task: Parsing/RPN to infix conversion
  94. Task: Parsing/Shunting-yard algorithm
  95. Task: Partial function application
  96. Task: Pascal matrix generation
  97. Task: Penney's game
  98. Task: Percolation/Bond percolation
  99. Task: Percolation/Mean cluster density
  100. Task: Percolation/Mean run density
  101. Task: Percolation/Site percolation
  102. Task: Permutations/Derangements
  103. Task: Permutations/Rank of a permutation
  104. Task: Permutations by swapping
  105. Task: Phrase reversals
  106. Task: Pig the dice game/Player
  107. Task: Pig the dice game
  108. Task: Probabilistic choice
  109. Draft: Proper divisors
  110. Task: Quaternion type
  111. Task: Quickselect algorithm
  112. Task: Random number generator (included)
  113. Task: Range expansion
  114. Task: Range extraction
  115. Task: Ranking methods
  116. Task: Rep-string
  117. Task: Sailors, coconuts and a monkey problem
  118. Task: Send email
  119. Task: Sequence of non-squares
  120. Draft: Sequence of primorial primes
  121. Task: Set consolidation
  122. Task: Seven-sided dice from five-sided dice
  123. Task: Shoelace formula for polygonal area
  124. Task: Short-circuit evaluation
  125. Task: Solve the no connection puzzle
  126. Task: Sort disjoint sublist
  127. Task: Sort stability
  128. Task: Sparkline in unicode
  129. Task: Spiral matrix
  130. Task: Stable marriage problem
  131. Task: Stern-Brocot sequence
  132. Task: String interpolation (included)
  133. Draft: Superpermutation minimisation
  134. Task: Test a function
  135. Task: Text processing/1
  136. Task: Text processing/2
  137. Task: Text processing/Max licenses in use
  138. Task: Tic-tac-toe
  139. Draft: Topological sort/Extracted top item
  140. Task: Topological sort
  141. Task: Topswops
  142. Task: Trabb Pardo–Knuth algorithm
  143. Task: Truncatable primes
  144. Task: Truth table
  145. Task: Unbias a random generator
  146. Task: Unicode variable names
  147. Task: Van der Corput sequence
  148. Task: Vector products
  149. Task: Verify distribution uniformity/Naive
  150. Task: Web scraping
  151. Task: Y combinator
  152. Task: Yin and yang
  153. Task: Zeckendorf number representation
  154. Task: Zhang-Suen thinning algorithm
Paul
  1. Draft: Linux CPU utilization
Paul.chernoch
  1. Draft: Cycle detection
Paulo Jorente
  1. Draft: 15 puzzle solver
  2. Draft: Bacon cipher
  3. Draft: Black Box
  4. Draft: Decimal floating point number to binary
  5. Draft: Greed
  6. Draft: Hexapawn
  7. Draft: Markov chain text generator
  8. Draft: Mastermind
  9. Draft: Playfair cipher
  10. Draft: Robots
  11. Task: Smith numbers
  12. Draft: Snake And Ladder
  13. Draft: Tamagotchi emulator
Pelci
  1. Task: Combinations with repetitions
  2. Task: Knapsack problem/0-1
  3. Task: Knapsack problem/Bounded
  4. Task: Knapsack problem/Continuous
  5. Task: Permutations
Pirho
  1. Task: Gaussian elimination
Pistacchio
  1. Task: Hunt The Wumpus
Proton
  1. Draft: External sort
Rainb
  1. Draft: Base64 encode data
Ralph
  1. Task: Sort an array of composite structures
RasF
  1. Task: Problem of Apollonius
Raslbg
  1. Draft: Data Encryption Standard
Razerwolf
  1. Draft: Bilinear interpolation
Rdm
  1. Task: 15 Puzzle Game
  2. Draft: Convex hull
  3. Draft: OpenGL Pixel Shader
Rob.s.brit
  1. Task: Brownian tree
  2. Task: Execute a Markov algorithm
  3. Task: Fractal tree
  4. Task: Multiple regression
Roger Hui
  1. Task: Averages/Arithmetic mean
  2. Task: Combinations
  3. Task: Multiplicative order
  4. Task: Roots of unity
  5. Task: Sum of squares
Roland Illig
  1. Task: Nested function
Sanaris
  1. Draft: N-body problem
Sceiler
  1. Draft: Extract file extension
Senyotzyabin
  1. Task: Sum multiples of 3 and 5
Sgeier
  1. Task: Hostname
  2. Task: Introspection
  3. Task: Simple windowed application
Shedai
  1. Draft: Most frequent k chars distance
ShinTakezou
  1. Task: Binary strings
  2. Task: Bitmap/Flood fill
  3. Task: Bitmap/Read an image through a pipe
  4. Task: Bitwise IO
  5. Task: Call a function in a shared library
  6. Task: Closest-pair problem
  7. Task: Forest fire
  8. Task: Four bit adder
  9. Task: Gamma function
  10. Task: Miller–Rabin primality test
  11. Task: Nth root
  12. Task: Palindrome detection
  13. Task: Polynomial long division
  14. Task: Ray-casting algorithm
  15. Task: Sorting algorithms/Counting sort
  16. Task: Sorting algorithms/Gnome sort
  17. Task: Xiaolin Wu's line algorithm
Short Circuit
  1. Task: Conditional structures
  2. Task: Count in factors
  3. Task: Empty program
  4. Task: Exceptions
  5. Task: Execute Brain****
  6. Task: Execute a system command
  7. Task: File input/output
  8. Task: Find the missing permutation
  9. Task: Flow-control structures
  10. Task: Greatest element of a list
  11. Task: Hello world/Text
  12. Task: Integer sequence
  13. Task: JSON
  14. Task: Long multiplication
  15. Task: Map range
  16. Task: Old lady swallowed a fly
  17. Task: Parse an IP Address
  18. Task: RCRPG
  19. Task: Rate counter
  20. Draft: Remote agent/Agent interface
  21. Draft: Remote agent/Agent logic
  22. Draft: Remote agent/Simulation
  23. Task: Rock-paper-scissors
  24. Task: Roots of a function
  25. Draft: Rosetta Code/List authors of task descriptions
  26. Task: Singleton
  27. Task: Singly-linked list/Element definition
  28. Task: Singly-linked list/Element insertion
  29. Task: Sum of a series
  30. Task: Symmetric difference
  31. Draft: Table creation
  32. Task: Undefined values
  33. Task: Walk a directory/Recursively
Simplex
  1. Task: Department Numbers
Siskus
  1. Draft: Assertions in design by contract
  2. Draft: Separate the house number from the street name
  3. Draft: Starting a web browser
Sluggo
  1. Task: Deconvolution/1D
  2. Task: Deconvolution/2D+
  3. Task: Permutation test
  4. Draft: Subset sum problem
Smarmius
  1. Task: Voronoi diagram
Smls
  1. Task: Brace expansion
  2. Task: Compare a list of strings
  3. Task: Convert seconds to compound duration
  4. Task: Tokenize a string with escaping
Sonia
  1. Draft: Currency
  2. Task: Hello world/Web server
  3. Task: K-d tree
  4. Task: Sorting algorithms/Sleep sort
  5. Task: Word wrap
Sothach
  1. Draft: Longest common prefix
Spekkio
  1. Task: CRC-32
  2. Task: Munching squares
Spintronic
  1. Draft: XML Validation
Spoon!
  1. Task: Associative array/Iteration
  2. Task: Character codes
  3. Task: Closures/Value capture
  4. Task: Count occurrences of a substring
  5. Task: Environment variables
  6. Draft: Sorting algorithms/Patience sort
Star651
  1. Draft: AudioAlarm
  2. Draft: Audio Overlap Loop
Stone
  1. Task: Tokenize a string
Sxpert
  1. Draft: OpenWebNet Password
TBH
  1. Task: Forward difference
TheWombat
  1. Task: Validate International Securities Identification Number
Thundergnat
  1. Task: Benford's law
  2. Draft: Imaginary base numbers
  3. Draft: Largest number divisible by its digits
  4. Task: Pathological floating point problems
  5. Task: Self-referential sequence
Til
  1. Task: Regular expressions
TimSC
  1. Draft: A* search algorithm
  2. Draft: Angle difference between two bearings
  3. Draft: Apply a digitial filter (direct form II transposed)
  4. Draft: Determine if two triangles overlap
  5. Draft: Eertree
  6. Draft: Find the intersection of a line with a plane
  7. Draft: Find the intersection of two lines
  8. Draft: Negative base numbers
  9. Draft: Ramer-Douglas-Peucker line simplification
TimToady
  1. Task: Same Fringe
  2. Task: Twelve statements
Tinku99
  1. Task: Color of a screen pixel
  2. Task: Dynamic variable names
  3. Task: Inverted index
  4. Task: Keyboard macros
  5. Task: Mouse position
  6. Task: OLE Automation
  7. Draft: Parse EBNF
  8. Task: Simulate input/Keyboard
  9. Task: Simulate input/Mouse
  10. Task: Window management
TobyK
  1. Task: Check Machin-like formulas
  2. Draft: Chess player/Move generation
  3. Draft: Chess player/Program options and user interface
  4. Draft: Chess player/Search and evaluation
  5. Draft: Find duplicate files
  6. Task: Password generator
Toucanbird
  1. Task: CUSIP
  2. Task: IBAN
  3. Draft: NYSIIS
  4. Draft: Time-based One-time Password Algorithm
Trizen
  1. Draft: Arithmetic coding/As a generalized change of radix
  2. Task: Cramer's rule
  3. Draft: Faulhaber's formula
  4. Draft: Faulhaber's triangle
  5. Task: Jaro distance
  6. Draft: Snake
Ttmrichter
  1. Task: Universal Turing machine
Umariani
  1. Task: Sort a list of object identifiers
Underscore
  1. Task: Go Fish
  2. Task: Metaprogramming
Vcelier
  1. Task: Sorting algorithms/Bubble sort
Vilipetek
  1. Task: CSV data manipulation
Waldorf
  1. Task: Address of a variable
  2. Task: Concurrent computing
  3. Task: Define a primitive data type
  4. Task: Generic swap
  5. Task: Handle a signal
  6. Task: Memory layout of a data structure
  7. Task: Metered concurrency
  8. Task: Object serialization
  9. Task: Playing cards
  10. Task: Roman numerals/Encode
  11. Task: Synchronous concurrency
  12. Task: Variable size/Get
  13. Task: Variable size/Set
Walterpachl
  1. Draft: Selective File Copy
Wei2912
  1. Task: General FizzBuzz
  2. Task: Unix/ls
WillNess
  1. Task: Sequence of primes by Trial Division
  2. Task: Zebra puzzle
Wmeyer
  1. Task: Compile-time calculation
Wolfram
  1. Task: Fast Fourier transform
Wsg
  1. Task: Semiprime
Xenoker
  1. Task: Runge-Kutta method
Xkrouhn
  1. Task: Convert decimal number to rational
  2. Task: Self-describing numbers
Yuriy Chumak
  1. Draft: OpenGL/Utah Teapot
Zelah
  1. Draft: Integer roots
  2. Draft: Self-hosting compiler
Zorro1024
  1. Task: Perfect shuffle
  2. Draft: Vector
Zzo38
  1. Task: Thue-Morse
Русский
  1. Task: Main step of GOST 28147-89
  2. Draft: Old Russian measure of length
  3. Draft: Transportation problem

Perl 6

Works with: Rakudo version 2017.08

The pseudocode above is no longer really useful as the page format has changed. Rather than checking every edit to see if it was a change to the task description, we'll just assume the user that created the page is the task author. This isn't 100% accurate; a very few pages got renamed and recreated by someone other than the original author without preserving the history, so they are misreported (15 Puzzle Game for instance,) but is as good as it is likely to get without extensive manual intervention. Any further edits to the task description are not credited. As it is, we must still make thousands of requests and pound the server pretty hard. Checking every edit would make the task several of orders of magnitude more abusive of the server (and my internet connection.)

Each stage of the scraping process is saved to local files so it can be restarted without losing all your progress in the event of a timeout or error. If that happens though, you need to manually adjust where to restart the process.

<lang perl6>use HTTP::UserAgent; use Gumbo; use Sort::Naturally;

my $ua = HTTP::UserAgent.new;

for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category { # Get lists of Tasks & Draft Tasks

   # last; # Uncomment to skip this step
   my $page = "http://rosettacode.org/wiki/Category:$category";
   my $html =  $ua.get($page).content;

my $xmldoc = parse-html($html, :TAG

, :id<mw-pages>); my @tasks = parse-html($xmldoc[0].Str, :TAG
  • ).Str.comb( /'/wiki/' <-["]>+ / )>>.substr(6); #'" my $f = open("./RC_{$category}.txt", :w) or die "$!\n"; $f.print( @tasks.join("\n") ); $f.close; } for 'Programming_Tasks', 'Draft_Programming_Tasks' -> $category { # Scrape info from each page. # last; # Uncomment to skip this step my @tasks = "./RC_{$category}.txt".IO.slurp.lines; for @tasks -> $title { my $ua = HTTP::UserAgent.new; # Get the earliest edit my $addr = "http://rosettacode.org/mw/index.php?title={$title}&dir=prev&limit=1&action=history"; my $html = $ua.get: $addr; $html.content ~~ m|'
  • ' (.+?) '' |;
           my $line = $0.lines.tail;
           # Parse out the User name
           $line ~~ m| 'title="User:' <-[>]>+? '>' (.+?) '</a>' |;
    
           my $auth = $0;
           # Oops, no user name, must be anonymous, get IP address instead
           unless $auth {
               $line ~~ m| '"mw-userlink mw-anonuserlink">' (.+?) '</a>' |;
               $auth = $0;
           }
    
           # Parse out human readable title
           $line ~~ m| '<a href="/mw/index.php?title=' $title '&' .+? 'title="'(<-["]>+)'"' |; #"'
    
           my $decoded = $0;
    
           # report progress
           say "$decoded: $auth";
    
           # save it to a file
           my $f = open("./RC_Authors.txt", :a)  or die "$!\n";
           $f.say( "$decoded\t$category\t$auth" );
           $f.close;
    
           sleep 3; # Don't pound the server
       }
    

    }

    1. Read in saved author info

    my %authors; my ($cnt, $draftcnt, $taskcnt); "./RC_Authors.txt".IO.slurp.lines.map: {

       my ($task, $cat, $auth) = $_.split("\t");
       $cnt++;
       if $cat.contains('Draft') {
           $cat = 'Draft:';
           $draftcnt++;
       } else {
           $cat = 'Task: ';
           $taskcnt++;
       }
       %authors{$auth}.push: "$cat $task";
    

    };

    1. Dump an HTML table to a file

    my $out = open("./RC_Authors.html", :w) or die "$!\n";

    $out.say( '' );

    for %authors.sort(*.key.&naturally) -> $a {

    $out.print( '' );

    }

    $out.say( '
    As of ', Date.today, ' | Total: ',
       $cnt, ' / Tasks: ', $taskcnt, ' / Draft Tasks: ', $draftcnt,
    
    '
    UserAuthored
    ', $a.key, '
    1. ' ); $out.print( $a.value.sort( *.substr(7) ).join('
    2. ') ); $out.say( '
    ' );

    $out.close;</lang>

    Sample output
    As of 2017-09-04 | Total: 1059 / Tasks: 854 / Draft Tasks: 205
    UserAuthored
    2Powers
    1. Draft: Names to numbers
    2. Draft: Solving coin problems
    12.175.32.19
    1. Task: Soundex
    12Me21
    1. Task: Draw a rotating cube

    Many rows omitted...
    Zorro1024
    1. Task: Perfect shuffle
    2. Draft: Vector
    Zzo38
    1. Task: Thue-Morse
    Русский
    1. Task: Main step of GOST 28147-89
    2. Draft: Old Russian measure of length
    3. Draft: Transportation problem