Skip to content

Instantly share code, notes, and snippets.

@pongsh
Created July 27, 2013 02:09
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save pongsh/6093375 to your computer and use it in GitHub Desktop.
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.
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) }
@pongsh
Copy link
Author

pongsh commented Jul 27, 2013

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment