Skip to content

Instantly share code, notes, and snippets.

@arn-e
arn-e / newton_fibonacci_2.rb
Created September 11, 2012 10:15
Newton Fibonacci 2
require 'benchmark'
def is_fibonacci?(i)
x, x1 = 5 * (i * i) + 4, 5 * (i * i) - 4
y, y1 = (newton_root(5 * (i * i) + 4)).to_i, (newton_root(5 * (i * i) - 4)).to_i
(y**2) == x || (y1**2) == x1 ? true : false
end
def newton_root(n)
if (Math.sqrt(n)).infinite?
@arn-e
arn-e / newton_fibonacci_updated.rb
Created September 11, 2012 10:41
Newton Fibonacci Updated
require 'benchmark'
@mod_256 = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 0, 33, 68, 105, 185, 228, 17, 113, 164, 217, 73, 132, 193, 65, 201, 89, 241, 145, 57, 233, 161, 97, 41, 249, 209, 177, 153, 137, 129]
def approx_root(n)
return n if n < 100
len, divisor = ((n.to_s.length - 3) / 2), 10
1.upto(len) {|i| divisor = divisor * 10}
return n / divisor
end
@arn-e
arn-e / solve_combinations.rb
Created September 17, 2012 15:57
solve_combinations
class SpeedDialPermutations
def average_time(set,iterations,perm,target = get_combinations(set).sample)
avg_arr = []
for i in 0..iterations
avg_arr.push get_combinations(set).shuffle.index(target)
end
return ((avg_arr.inject(:+).to_f / avg_arr.size)*4)/60
end
@arn-e
arn-e / babycrypto.rb
Created September 20, 2012 00:30
BabyCrypto
class BabyCrypto
def decrypt(key, value)
((key.class == Fixnum) || (key.to_i != 0)) ? offset = key.to_s.split.map {|i| i.to_i} : offset = calc_offset(key)
decrypted, off_i = [], 1
value.split('').each_with_index do |val, i|
val.ord >= 97 && val.ord <= 122 ? dist = val.ord + (offset[off_i -1] % 26) : dist = val.ord
dist > 122 && dist!= val.ord ? (decrypted.push (122 - (26 - (dist - 122))).chr) : (decrypted.push dist.chr)
off_i % (offset.length) == 0 ? off_i = 1 : off_i = off_i + 1
end
@arn-e
arn-e / char_anal1.rb
Created September 20, 2012 04:18
character analysis 1
def freq_analysis(msg)
freq,msg_arr,sum = Hash.new(0),msg.split(''),0
msg_arr.each_with_index {|i,j| msg_arr.delete_at(j) if i == " "}.each {|i| freq[i],sum = freq[i] + 1,sum +1}
return freq.each {|a,b| freq[a] = calc_perc(b,sum)}.sort_by {|i,j| j}.reverse
end
@arn-e
arn-e / single_key.rb
Created September 20, 2012 04:29
decrypt single key
def decrypt_single_key(key,value)
offset,decrypted, off_i = key,[] , 1
value.split('').each_with_index do |val, i|
val.ord >= 97 && val.ord <= 122 ? dist = (val.ord + offset % 26) : dist = val.ord
dist > 122 && dist!= val.ord ? (decrypted.push (122 - (26 - (dist - 122))).chr) : (decrypted.push dist.chr)
end
return decrypted.join
end
@arn-e
arn-e / single_key_encrypt.rb
Created September 20, 2012 04:35
encrypt single key
def encrypt_single_key(key,value)
offset,encrypted, off_i = key,[] , 1
value.split('').each_with_index do |val, i|
val.ord >= 97 && val.ord <= 122 ? dist = val.ord - (offset % 26) : dist = val.ord
dist < 97 && dist != val.ord ? (encrypted.push (122 - (97 - (dist+1))).chr) : (encrypted.push dist.chr)
end
return encrypted.join
end
@arn-e
arn-e / freq_analysis_first.rb
Created September 20, 2012 04:52
frequency analysis first char
def freq_analysis_first(msg)
f_freq,msg_arr,sum = Hash.new(0),msg.split(' '),0
msg_arr.each {|i| i.split('').each_with_index do |a,b|
f_freq[a], sum = f_freq[a] + 1, sum +1 if b == 0
end}
return f_freq.each {|a,b| f_freq[a] = calc_perc(b,sum)}.sort_by {|i,j| j}.reverse
end
@arn-e
arn-e / simple_postfix.js
Created September 20, 2012 20:18
simple postfix
function simple_postfix(input){
val = input.split(' ');
return eval(val[0] + val[2] + val[1]);
}
console.log("Result is : " + simple_postfix("4 2 +"));
@arn-e
arn-e / speed_dial_perm_results.rb
Created September 20, 2012 21:27
Speed Dial Permutation Results
speed_dial = SpeedDialPermutations.new
puts speed_dial.get_combinations( ["Up","Right","Left","Down"])
# Up,Up,Up,Right (etc.)
puts speed_dial.simulate( ["Up","Right","Left","Down"],0.01,6)
# Attempt 3 Unsuccessful : Up,Left,Down,Left : Elapsed time : 8.000366121 (etc.)
puts speed_dial.average_time( ["Up","Right","Left","Down"],10000,["Up","Down","Left","Right"])
#8.534266573342666