Created
July 27, 2013 02:09
-
-
Save pongsh/6093375 to your computer and use it in GitHub Desktop.
Scrapes the dailyprogrammer subreddit and generates a list of all the challenges found sorted by difficulty.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'mechanize' | |
easy = "" | |
intermediate = "" | |
hard = "" | |
agent = Mechanize.new | |
page = agent.get('http://www.reddit.com/r/dailyprogrammer') | |
while page do | |
page.search('a.title').each do |challenge| | |
# Escapes the '[' and ']' characters so that they can be used as links in the markdown document | |
processedText = challenge.text.downcase.gsub(/[\[\]]/, '[' => '\[', ']' => '\]') | |
if processedText.include?('easy') | |
easy += "[" + processedText + "]" + "(" + "http://www.reddit.com" + challenge['href'] + ") \n" | |
elsif processedText.include?('intermediate') | |
intermediate += "[" + processedText + "]" + "(" + "http://www.reddit.com" + challenge['href'] + ") \n" | |
elsif processedText.include?('hard') | |
hard += "[" + processedText + "]" + "(" + "http://www.reddit.com" + challenge['href'] + ") \n" | |
end | |
end | |
# See if there is a link to the next page in the subreddit | |
page = agent.page.links.find { |l| l.text.include?('next') } | |
# If there is no 'next' link that means it is the last page | |
page = page.click if page != nil | |
end | |
markdownText = "#Daily Programmer\n##Easy\n#{easy}\n##Intermediate\n#{intermediate}\n##Hard\n#{hard}" | |
File.open('daily-programmer.md', 'w') { |file| file.write(markdownText) } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Daily Programmer
Easy
[07/15/13] challenge #133 [easy] foot-traffic analysis
[07/08/13] challenge #132 [easy] greatest common divisor
[07/01/13] challenge #131 [easy] who tests the tests?
[06/17/13] challenge #130 [easy] roll the dies
[easy] longest two-character sub-string
[06/4/13] challenge #128 [easy] sum-the-digits, part ii
[05/28/13] challenge #127 [easy] mccarthy 91 function
[05/20/13] challenge #126 [easy] real-world merge sort
[05/13/13] challenge #125 [easy] word analytics
[05/06/13] challenge #124 [easy] edge sorting
[05/06/13] challenge #124 [easy] new-line troubles
[04/29/13] challenge #123 [easy] new-line troubles
[04/22/13] challenge #123 [easy] sum them digits
[04/01/13] challenge #122 [easy] sum them digits
[03/18/13] challenge #122 [easy] words with ordered vowels
[03/04/13] challenge #121 [easy] bytelandian exchange 1
[02/04/13] challenge #120 [easy] log throughput counter
[01/28/13] challenge #119 [easy] change calculator
[01/21/13] challenge #118 [easy] date localization
[01/14/13] challenge #117 [easy] hexdump to ascii
[01/07/13] challenge #116 [easy] permutation of a string
[1/2/2013] challenge #115 [easy] guess-that-number game!
[12/4/2012] challenge #114 [easy] word ladder steps
[11/20/2012] challenge #113 [easy] string-type checking
[11/14/2012] challenge #112 [easy]get that url!
[11/6/2012] challenge #111 [easy] star delete
[11/3/2012] challenge #110 [easy] keyboard shift
[10/30/2012] challenge #109 [easy] digits check
[10/27/2012] challenge #108 [easy] (scientific notation translator)
[10/25/2012] challenge #107 [easy] (all possible decodings)
[10/23/2012] challenge #106 [easy] (random talker, part 1)
[10/20/2012] challenge #105 [easy] (word unscrambler)
[10/18/2012] challenge #104 [easy] (powerplant simulation)
[10/13/2012] challenge #103 [easy-difficult] (text transformations)
[9/30/2012] challenge #102 [easy] (dice roller)
[9/27/2012] challenge #101 [easy] (non-repeating years)
[9/20/2012] challenge #100 [easy] (sleep cycle estimator)
[9/17/2012] challenge #99 [easy] (words with letters in alphabetical order)
[9/15/2012] challenge #98 [easy] (arithmetic tables)
[9/08/2012] challenge #97 [easy] (concatenate directory)
[9/05/2012] challenge #96 [easy] (controller chains)
[9/03/2012] challenge #95 [easy] (reversing text in file)
[9/01/2012] challenge #94 [easy] (elemental symbols in strings)
[8/30/2012] challenge #93 [easy] (two-way morse code translator)
[8/27/2012] challenge #92 [easy] (digital number display)
[8/24/2012] challenge #91 [easy] (sleep sort)
[8/22/2012] challenge #90 [easy] (walkaround rasterizer)
[8/20/2012] challenge #89 [easy] (simple statistical functions)
[8/13/2012] challenge #88 [easy] (vigenère cipher)
[8/10/2012] challenge #87 [easy] (rectangle intersection)
[8/8/2012] challenge #86 [easy] (run-length encoding)
[8/3/2012] challenge #85 [easy] (row/column sorting)
[8/1/2012] challenge #84 [easy] (searching text adventure)
[7/30/2012] challenge #83 [easy] (long scale and short scale)
[7/27/2012] challenge #82 [easy] (substring list)
[7/25/2012] challenge #81 [easy] (numerical calculus i)
[7/23/2012] challenge #80 [easy] (anagrams)
[7/18/2012] challenge #79 [easy] (counting in steps)
[7/18/2012] challenge #78 [easy] (keyboard locale simulator)
[7/16/2012] challenge #77 [easy] (enumerating morse code sequences)
[7/13/2012] challenge #76 [easy] (title case)
[7/12/2012] challenge #75 [easy] (function transformation)
[7/9/2012] challenge #74 [easy]
[7/6/2012] challenge #73 [easy]
[7/4/2012] challenge #72 [easy]
[7/2/2012] challenge #71 [easy]
[6/29/2012] challenge #70 [easy]
[6/26/2012] challenge #69 [easy]
[6/22/2012] challenge #68 [easy]
[6/20/2012] challenge #67 [easy]
[6/18/2012] challenge #66 [easy]
[6/15/2012] challenge #65 [easy]
[6/13/2012] challenge #64 [easy]
[6/11/2012] challenge #63 [easy]
[6/8/2012] challenge #62 [easy]
[6/6/2012] challenge #61 [easy]
[6/4/2012] challenge #60 [easy]
[6/2/2012] challenge #59 [easy]
[5/28/2012] challenge #58 [easy]
[5/25/2012] challenge #57 [easy]
[5/23/2012] challenge #56 [easy]
[5/21/2012] challenge #55 [easy]
[5/19/2012] challenge #54 [easy]
[5/16/2012] challenge #53 [easy]
[5/14/2012] challenge #52 [easy]
[5/11/2012] challenge #51 [easy]
[5/9/2012] challenge #50 [easy]
[5/7/2012] challenge #49 [easy]
[5/4/2012] challenge #48 [easy]
[5/2/2012] challenge #47 [easy]
[4/30/2012] challenge #46 [easy]
[4/27/2012] challenge #45 [easy]
[4/25/2012] challenge #44 [easy]
[4/24/2012] challenge #43 [easy]
[4/23/2012] challenge #42 [easy]
[4/19/2012] challenge #41 [easy]
[4/16/2012] challenge #40 [easy]
[4/12/2012] challenge #39 [easy]
[4/10/2012] challenge #38 [easy]
[4/8/2012] challenge #37 [easy]
[4/5/2012] challenge #36 [easy]
[4/3/2012] challenge #35 [easy]
[3/31/2012] challenge #34 [easy]
[3/30/2012] challenge #33 [easy]
[3/28/2012] challenge #32 [easy]
[3/27/2012] challenge #31 [easy]
[3/26/2012] challenge #30 [easy]
[3/22/2012] challenge #29 [easy]
[3/20/2012] challenge #28 [easy]
[3/17/2012] challenge #27 [easy]
[3/16/2012] challenge #26 [easy]
[3/15/2012] challenge #25 [easy]
[3/13/2012] challenge #23 [easy]
[3/10/2012] challenge #22 [easy]
[3/9/2012] challenge #21 [easy]
[3/8/2012] challenge #20 [easy]
[3/7/2012] challenge #19 [easy]
[3/5/2012] challenge #18 [easy]
[3/4/2012] challenge #17 [easy]
[2/27/2012] challenge #16 [easy]
[2/24/2012] challenge #15 [easy]
[2/23/2012] challenge #14 [easy]
[2/21/2012] challenge #13 [easy]
[2/20/2012] challenge #12 [easy]
[2/19/2012] challenge #11 [easy]
[2/18/2012] challenge #10 [easy]
[2/17/2012] challenge #9 [easy]
[2/16/2012] challenge #8 [easy]
[2/15/2012] challenge #7 [easy]
[2/14/2012] challenge #6 [easy]
[2/12/2012] challenge #5 [easy]
[2/12/2012] challenge #4 [easy]
[2/11/2012] challenge #3 [easy]
[easy] challenge #2
[easy] challenge #1
[04/15/13] challenge #122 [easy] sum them digits
Intermediate
[07/17/13] challenge #130 [intermediate] foot-traffic generator
[07/10/13] challenge #129 [intermediate] n-dimensional vectors
[06/12/13] challenge #128 [intermediate] covering potholes
[06/09/13] challenge #127 [intermediate] call forwarding
[05/30/13] challenge #126 [intermediate] perfect p'th powers
[05/22/13] challenge #125 [intermediate] halt! it's simulation time!
[05/08/13] challenge #124 [intermediate] circular graphs
[05/08/13] challenge #123 [intermediate] synchronizing calendars
[04/01/13] challenge #122 [intermediate] user-space threading
[03/27/13] challenge #121 [intermediate] path to philosophy
[03/13/13] challenge #121 [intermediate] bytelandian exchange 2
[03/06/13] challenge #121 [intermediate] bytelandian exchange 2
[02/06/13] challenge #120 [intermediate] base conversion words
[01/30/13] challenge #119 [intermediate] find the shortest path
[01/23/13] challenge #118 [intermediate] canon timing
[01/16/13] challenge #117 [intermediate] mayan long count
[01/09/13] challenge #117 [intermediate] sort r/dailyprogrammer!
[1/3/2013] challenge #115 [intermediate] sum-pairings
[12/4/2012] challenge #114 [intermediate] shortest word ladder
[11/20/2012] challenge #113 [intermediate] text markup
[11/14/2012] challenge #112 [intermediate]date sorting
[11/6/2012] challenge #111 [intermediate] the first sudoku
[11/3/2012] challenge #110 [intermediate] creepy crawlies
[10/30/2012] challenge #109 [intermediate]
[10/27/2012] challenge #108 [intermediate] (minesweeper generation)
[10/25/2012] challenge #107 [intermediate] (infinite monkey theorem)](http://www.reddit.com/r/dailyprogrammer/comments/122c6d/10252012_challenge_107_intermediate_infinite/)
[10/23/2012] challenge #106 [intermediate] (jugs)
[10/20/2012] challenge #105 [intermediate] (boolean logic calculator)
[10/18/2012] challenge #104 [intermediate] (bracket racket)
[9/30/2012] challenge #102 [intermediate] (n-character-set strings)
[9/27/2012] challenge #101 [intermediate] (image stenography)
[9/20/2012] challenge #100 [intermediate] ("bad" word filter)
[9/17/2012] challenge #99 [intermediate] (unemployment map of the united states)
[9/15/2012] challenge #98 [intermediate] (multiple cycling)
[9/08/2012] challenge #97 [intermediate] (sierpinski carpet)
[9/06/2012] challenge #96 [intermediate] (parsing english values)
[9/03/2012] challenge #95 [intermediate] (filler text)
[9/01/2012] challenge #94 [intermediate] (base64 conversion)
[8/30/2012] challenge #93 [intermediate] (z-order encryption)
[8/27/2012] challenge #92 [intermediate] (rubik's cube simulator)
[8/24/2012] challenge #91 [intermediate] (cantor's fractions)
[8/22/2012] challenge #90 [intermediate] (scientific units calculator)
[8/20/2012] challenge #89 [intermediate] (printing strings in brainf***)'
[8/13/2012] challenge #88 [intermediate] (printing out a calendar)
[8/10/2012] challenge #87 [intermediate] (chord lookup)
[8/8/2012] challenge #86 [intermediate] (weekday calculations)
[8/3/2012] challenge #85 [intermediate] (3d cuboid projection)
[8/1/2012] challenge #84 [intermediate] (recursive song)
[7/30/2012] challenge #83 [intermediate] (indexed file search)
[7/27/2012] challenge #82 [intermediate] (broken roman numerals)
[7/25/2012] challenge #81 [intermediate] (local minimization)
[7/23/2012] challenge #80 [intermediate] (poker hands)
[7/18/2012] challenge #79 [intermediate] (plain pgm file viewer)
[7/18/2012] challenge #78 [intermediate] (dependency planner)
[7/16/2012] challenge #77 [intermediate] (last digit of factorial)
[7/13/2012] challenge #76 [intermediate] (probability graph)
[7/12/2012] challenge #75 [intermediate] (build system)
[7/9/2012] challenge #74 [intermediate]
[7/6/2012] challenge #73 [intermediate]
[7/4/2012] challenge #72 [intermediate]
[7/2/2012] challenge #71 [intermediate]
[6/29/2012] challenge #70 [intermediate]
[6/26/2012] challenge #69 [intermediate]
[6/22/2012] challenge #68 [intermediate]
[6/20/2012] challenge #67 [intermediate]
[6/18/2012] challenge #66 [intermediate]
[6/15/2012] challenge #65 [intermediate]
[6/13/2012] challenge #64 [intermediate]
[6/11/2012] challenge #63 [intermediate]
[6/8/2012] challenge #62 [intermediate]
[6/6/2012] challenge #61 [intermediate]
[6/4/2012] challenge #60 [intermediate]
[6/2/2012] challenge #59 [intermediate]
[5/28/2012] challenge #58 [intermediate]
[5/25/2012] challenge #57 [intermediate]
[5/23/2012] challenge #56 [intermediate]
[5/21/2012] challenge #55 [intermediate]
[5/19/2012] challenge #54 [intermediate]
[5/16/2012] challenge #53 [intermediate]
[5/14/2012] challenge #52 [intermediate]
[5/11/2012] challenge #51 [intermediate]
[5/9/2012] challenge #50 [intermediate]
[5/7/2012] challenge #49 [intermediate]
[5/4/2012] challenge #48 [intermediate]
[5/2/2012] challenge #47 [intermediate]
[4/30/2012] challenge #46 [intermediate]
[4/27/2012] challenge #45 [intermediate]
[4/25/2012] challenge #44 [intermediate]
[4/24/2012] challenge #43 [intermediate]
[4/23/2012] challenge #42 [intermediate]
[4/19/2012] challenge #41 [intermediate]
[4/16/2012] challenge #40 [intermediate]
[4/12/2012] challenge #39 [intermediate]
[4/10/2012] challenge #38 [intermediate]
[4/8/2012] challenge #37 [intermediate]
[4/5/2012] challenge #36 [intermediate]
[4/3/2012] challenge #35 [intermediate]
[3/31/2012] challenge #34 [intermediate]
[3/30/2012] challenge #33 [intermediate]
[3/28/2012] challenge #32 [intermediate]
[3/27/2012] challenge #31 [intermediate]
[3/26/2012] challenge #30 [intermediate]
[3/22/2012] challenge #29 [intermediate]
[3/20/2012] challenge #28 [intermediate]
[3/17/2012] challenge #27 [intermediate]
[3/16/2012] challenge #26 [intermediate]
[3/15/2012] challenge #25 [intermediate]
[3/14/2012] challenge #24 [intermediate]
[3/13/2012] challenge #23 [intermediate]
[3/10/2012] challenge #22 [intermediate]
[3/9/2012] challenge #21 [intermediate]
[3/8/2012] challenge #20 [intermediate]
[3/7/2012] challenge #19 [intermediate]
[3/5/2012] challenge #18 [intermediate]
[3/4/2012] challenge #17 [intermediate]
[2/27/2012] challenge #16 [intermediate]
[2/24/2012] challenge #15 [intermediate]
[2/23/2012] challenge #14 [intermediate]
[2/21/2012] challenge #13 [intermediate]
[2/20/2012] challenge #12 [intermediate]
[2/19/2012] challenge #11 [intermediate]
[2/18/2012] challenge #10 [intermediate]
[2/17/2012] challenge #9 [intermediate]
[2/16/2012] challenge #8 [intermediate]
[2/15/2012] challenge #7 [intermediate]
[2/14/2012] challenge #6 [intermediate]
[2/13/2012] challenge #5 [intermediate]
[2/12/2012] challenge #4 [intermediate]
[2/11/2012] challenge #3 [intermediate]
[intermediate] challenge #2
[intermediate] challenge #1
Hard
[07/12/13] challenge #126 [hard] not-so-normal triangle search
[07/03/13] challenge #125 [hard] robo room service
[06/1/13] challenge #124 [hard] power-processor management
[05/24/13] challenge #123 [hard] snake-fill
[05/10/13] challenge #123 [hard] robot jousting
[05/10/13] challenge #122 [hard] subset sum insanity
[05/2/13] challenge #121 [hard] medal management
[03/22/13] challenge #120 [hard] derpson family party
[03/08/13] challenge #120 [hard] bytelandian exchange 3
[03/01/13] challenge #119 [hard] polygon diagonals
[01/25/13] challenge #118 [hard] alphabetizing cipher
[01/18/13] challenge #117 [hard] verify your language!
[01/11/13] challenge #116 [hard] maximum random walk
[10/20/2012] challenge #104 [hard] (image color analyzer)
[10/18/2012] challenge #104 [hard] (stack attack)
[7/18/2012] challenge #78 [hard] (maximum forest fire fighting)