Setup JedAI local ENV
echo "JEDAI_DEVENV_NAME=adit-saxena" >> .env
touch tmp/restart.txt
sudo service tribe-sidekiq restart
class CaesarCypher | |
# https://en.wikipedia.org/wiki/Letter_frequency | |
CHAR_DISTRIBUTION = {'a'=>8.167,'b'=>1.492,'c'=>2.782,'d'=>4.253,'e'=>12.702,'f'=>2.228,'g'=>2.015,'h'=>6.094,'i'=>6.966,'j'=>0.153,'k'=>0.772,'l'=>4.025,'m'=>2.406,'n'=>6.749,'o'=>7.507,'p'=>1.929,'q'=>0.095,'r'=>5.987,'s'=>6.327,'t'=>9.056,'u'=>2.758,'v'=>0.978,'w'=>2.361,'x'=>0.150,'y'=>1.974,'z'=>0.074} | |
IDEAL_ORDER = Hash[CHAR_DISTRIBUTION.sort_by { |_, v| -v }].keys | |
THRESHOLD_PERCENTAGE = 10 | |
def encode(message, shift) | |
message.chars.map do |char| | |
if char =~ /[a-z]/ |
class FizzBuzz | |
def dump(total_numbers) | |
total_numbers.times do |i| | |
puts parse_string i + 1 | |
end | |
end | |
def parse_string(number) | |
is_divisible_by_3 = number % 3 == 0 |
# Sum all the digits | |
# Write a program that takes a positive number as an input. | |
# The program should take every single digit of this number, | |
# and sum them until only a 1 digit number is left. | |
# Example input: 31337 | |
# Output: 8 (because 3+1+3+3+7=17 and 1+7=8) |
# Ruby as a particularly flexible language which provides developers a rich toolbox | |
# to express any source code in several different ways. | |
# Reading "Metaprogramming Ruby - Program Like the Ruby Pros" (The Pragmatic Programmers) | |
# I wanted to try my self many of the different `spells` (as Paolo calls them) | |
# I learned or learned its formal definition. | |
# Knowing how to use these tools becomes crucially useful as | |
# we'd often like a slight modification of the behaviour of an external gem. | |
# In this case we can either send a pull request to the owner |
# Instead of monkeypatching globally methods | |
# it is possible to `refine` methods | |
# so you know where a method is coming from. | |
# | |
# Ref: | |
# - http://rkh.im/ruby-2.1 | |
# - http://www.ruby-doc.org/core-2.1.1/doc/syntax/refinements_rdoc.html | |
# | |
# Note: | |
# - it was intruced in ruby 2.0 and became stable in ruby 2.1. |
require 'rspec' | |
require 'date' | |
class Person | |
def can_drink? | |
age >= 21 | |
end | |
def age |
# Elastic search grouping solution | |
# As at present ElasticSearch does not provide a group_by equivalent, here's my attempt to do it manually. | |
# In the example we have articles made by some authors and I'd like to have relevant docs, but not more than one per author. | |
# Assumption. | |
# | |
# 1) I'm looking for relevant content | |
# 2) I've assumed that first 300 docs are relevant, | |
# So I consider only this selection, regardless many of these are from the same few authors. | |
# 3) for my needs I didn't "really" needed pagination, for me it was enough a "show more" button updated through ajax |
# a = {"three"=>3, "two"=>2, "one"=>1}.symbolize_keys = {:three=>3, :one=>1, :two=>2} | |
# from Greg => http://objectmix.com/ruby/325092-transform-hash-key-string-into-symbol.html | |
class Hash | |
def symbolize_keys | |
replace(inject({}) { |h,(k,v)| h[k.to_sym] = v; h }) | |
end | |
end |