Skip to content

Instantly share code, notes, and snippets.

@mnmkng
Last active March 6, 2017 23:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mnmkng/5d9669db40c6123c3aa58fd6c394f113 to your computer and use it in GitHub Desktop.
Save mnmkng/5d9669db40c6123c3aa58fd6c394f113 to your computer and use it in GitHub Desktop.
#PES S02 S03
pole = ["123", "4a5", "Ka", "5,5,1", "0,1", "15,5", "1x", "15.5", "1,"]
suma = 0
pole.each do |item|
if item =~ /^\d+(,?\d+)$/
nums = item.gsub(",", "")
nums.length.times do |i|
suma += nums[i].to_i
end
end
end
p suma
matice = "1,2,3;7,8,9;6,5,4"
p pole = matice.split(";")
dohromady = 0
pole.length.times do |i|
p docas = pole[i].split(",")
dohromady += docas[i].to_i
end
puts dohromady
employees = [
{"first_name" => "James", "last_name" => "Smith", "age" => 22, "wage" => 20000},
{"first_name" => "Mary", "last_name" => "Johnson", "age" => 20, "wage" => 19000},
{"first_name" => "John", "last_name" => "Williams", "age" => 25, "wage" => 22000},
{"first_name" => "Patricia", "last_name" => "Brown", "age" => 30, "wage" => 25000},
{"first_name" => "Robert", "last_name" => "Jones", "age" => 27, "wage" => 25000},
{"first_name" => "Linda", "last_name" => "Miller", "age" => 22, "wage" => 21000},
{"first_name" => "Michael", "last_name" => "Davis", "age" => 35, "wage" => 25000},
{"first_name" => "Barbara", "last_name" => "Wilson", "age" => 24, "wage" => 23000},
{"first_name" => "William", "last_name" => "Anderson", "age" => 40, "wage" => 30000},
{"first_name" => "Elizabeth", "last_name" => "Taylor", "age" => 23, "wage" => 20000},
{"first_name" => "Jennifer", "last_name" => "Smith", "age" => 25, "wage" => 23000}
]
dictionaries = {
"EN" => {
"CZ" => {
"dog" => ["pes"],
"elephant" => ["slon"],
"tiger" => ["tygr"],
"month" => ["mesic"],
"moon" => ["mesic"],
"will" => ["vule", "zavet"]
},
"DE" => {
"dog" => ["Hund"],
"tiger" => ["Tiger"],
"cat" => ["Katze"]
}
},
"CZ" => {
"EN" => {
"pes" => ["dog"],
"mesic" => ["month", "moon"],
"vule" => ["will"],
"zavet" => ["will"]
},
"SK" => {
"pes" => ["pes"],
"tygr" => ["tiger"],
"velbloud" => ["tava"]
},
"DE" => {
"pes" => ["Hund"],
"hodina" => ["Stunde", "Uhr"]
}
}
}
study_results = [
{
"first_name" => "James",
"last_name" => "Smith",
"age" => 20,
"study_results" => {
"CAR" => nil,
"PR1" => 1,
"MA1" => 1,
"BEN" => 2,
"SDP" => nil
}
},
{
"first_name" => "Mary",
"last_name" => "Johnson",
"age" => 19,
"study_results" => {
"BFM" => 2,
"TAX" => nil,
"MA1" => 3,
"BEN" => 1,
"ITA" => 2
}
},
{
"first_name" => "John",
"last_name" => "Williams",
"age" => 19,
"study_results" => {
"CAR" => 1,
"PR1" => 3,
"MA1" => 2,
"BEN" => nil,
"SDP" => 3,
"OPT" => nil
}
},
{
"first_name" => "Patricia",
"last_name" => "Brown",
"age" => 21,
"study_results" => {
"CAR" => nil,
"PR1" => 2,
"MA1" => nil,
"BEN" => nil,
"SDP" => nil,
"GE1" => nil,
"RU1" => nil
}
},
{
"first_name" => "Robert",
"last_name" => "Jones",
"age" => 20,
"study_results" => {
"BFM" => nil,
"TAX" => nil,
"MA1" => 2,
"BEN" => 1,
"ITA" => 1
}
}
]
a1 = employees.sort_by{|employee| employee["age"]}
p "1.1 #{a1}"
a2 = employees.sort{|a,b| b["wage"] <=> a["wage"]}
p "1.2 #{a2}"
a3 = employees.sort_by{|employee| -employee["wage"]}
p "1.3 #{a3}"
a4 = employees.sort_by{|employee| employee["last_name"]}
p "1.4 #{a4}"
a5 = employees.sort{|a,b| b["last_name"] <=> a["last_name"]}
p "1.5 #{a5}"
b = employees.select {|employee| employee["wage"] > 22000}
p "2 #{b}"
# v zadani je < 25000 a vychazi prazdne pole.
c = employees.select{|employee| employee["age"] >= 30}.select{|employee| employee["wage"] < 25000}
p "3 #{c}"
# v zadani je < 25000 a vychazi prazdne pole. Zmenil jsem zadani aby bylo co radit.
d = employees.select{|employee| employee["age"] >= 30}.select{|employee| employee["wage"] <= 25000}.sort_by{|emp| -emp["age"]}
p "4 #{d}"
e = employees.inject{|min,employee| min["age"] > employee["age"] ? employee : min}
p "5 #{e}"
f = employees.inject{|max,emp| max["wage"] < emp["wage"] ? emp : max}
p "6 #{f}"
g = employees.sort_by{|emp| emp["age"]}.collect {|emp| emp["last_name"]}
p "7 #{g}"
h = employees.sort_by{|emp| emp["age"]}.collect {|emp| emp['last_name']}.join(",")
p "8 #{h}"
i = employees.sort_by{|e| -e["wage"]}.collect{|e| "#{e['first_name']} #{e['last_name']}"}.join(",")
p "9 #{i}"
j = employees.find{|e| (e["last_name"].length > 5) and (e["age"] > 27) and (e["wage"] < 30000)}
p "10 #{j}"
k = dictionaries.keys
p "11 #{k}"
require "set"
l = Set.new
dictionaries.each{|k,v| v.keys.each{|key| l << key}}
p "12 #{l.to_a}"
m = study_results.select{|student| student["study_results"].has_key?("MA1")}
p "13 #{m}"
n = study_results.select{|s| (s["study_results"]["MA1"] != nil) and (s["study_results"]["MA1"] <= 2)}
p "14 #{n}"
o = study_results.select{|s| s["study_results"].values.count(1)>= 2}
p "15 #{o}"
text = "Spicy jalapeno bacon ipsum dolor amet deserunt irure officia incididunt flank hamburger salami tail magna ut ut.
Doner sirloin landjaeger consequat pastrami ut pariatur. Ad pastrami in shankle corned beef pork loin.
Pastrami ham ut pork belly nostrud, do frankfurter incididunt beef chuck tri-tip kielbasa non.
Officia excepteur pig mollit.
Filet mignon incididunt ea consequat magna velit tri-tip corned beef cupim alcatra consectetur ground round.
Nostrud ham hock doner capicola turducken tri-tip shank veniam eu."
hash = Hash.new(0)
text.each_line do |line|
line.split(" ").each do |text|
text.length.times do |i|
hash[text.downcase[i]] += 1
end
end
end
p hash.sort_by{|k,v| v}.reverse[0..2]
=begin
Napište program, který projde seznam objednávek a zkontroluje,
zda jsou objednávky v pořádku. Každá objednávka je reprezentována řetězcem,
který se skládá z následujících položek (jednotlivé položky jsou od sebe odděleny čárkou):
čas objednávky ve tvaru hh:mm,
jméno zákazníka,
číslo kreditní karty (jednotlivé čtveřice cifer od sebe mohou být odděleny pomlčkami, mezerami nebo takové vůbec ničím)
a kód objednávky. Kód objednávky musí začínat velkým písmenem A, C, G, L, P, W nebo X,
poté následuje 12 číslic a poté může (ale nemusí) následovat malé písmeno od a do j.
=end
orders = [
"06:55,James Smith,1234-5678-1234-5678,A012345678901",
"07:13,Mary Johnson,3945 4592 6992 4336,G437329274753d",
"07:59,John Williams,4093430363095084,W524309843098c",
"25:68,Patricia Brown,4843 4328-32985084,D209843898743x"
# add your own data
]
regexp = /\d\d:\d\d,[A-Z][a-z]+\s[A-Z][a-z]+,(\d{4}[-\s]?){3}\d{4},[ACGLPWX]\d{12}[a-j]?$/
orders.each do |order|
p order =~ regexp
end
s = "jeLenovi pivo nelej"
p (s.gsub!(" ", "").downcase! == s.reverse) ? "palindrom" : "not a palindrom"
=begin
Napište program, který od uživatele načte jeho jméno a regulárním výrazem ověří, zda jméno odpovídá očekávanému formátu. Zkuste promyslet následující situace (nejprve každou zvlášť, pak se případně zamyslete nad některými kombinacemi:
Jméno očekáváme v běžném tvaru „Jméno Příjmení“, tedy velké písmeno následované malými, pak mezera a pak znovu velké písmeno následované malými.
Dvě jména a pak příjmení. Případně i ještě více křestních jmen a pak teprve příjmení.
První křestní jméno, pak iniciála druhého křestního jména a pak příjmení.
Jméno, kdy před příjmením mohou (ale nemusí) být slova jako „van“, „von“ (jinak řečeno slova nezačínající velkým písmenem).
Jméno, které je zakončeno římským číslem a tečkou (jako Karel IV. nebo Přemysl Otakar II.).
=end
names = ["Jmeno Prijmeni", "Jmeno Jmeno Jmeno Prijmeni", "Jmeno J. Prijmeni", "Jmeno von Prijmeni", "Premysl Otakar II."]
regexps = [/[A-Z][a-z]+\s[A-Z][a-z]+$/,
/([A-Z][a-z]+\s)+[A-Z][a-z]+$/,
/[A-Z][a-z]+\s[A-Z].\s[A-Z][a-z]+$/,
/[A-Z][a-z]+\s([a-z]+\s)?[A-Z][a-z]+$/,
/([A-Z][a-z]+\s)+[MCLXVI]+.$/
]
ultimate = /([A-Z][a-z]+\s)+([A-Z].\s)?([a-z]+\s)?[A-Z][a-z]+(\s[MCLXVI]+.)?$/
names.length.times do |i|
p names[i] =~ regexps[i]
p names[i] =~ ultimate
end
num = "MCMXLVII"
map = {
"M" => 1000,
"C" => 100,
"L" => 50,
"X" => 10,
"V" => 5,
"I" => 1
}
sum = 0
num.length.times do |i|
sum += ((i != num.length-1) and (map[num[i]] < map[num[i+1]])) ? -map[num[i]] : map[num[i]]
end
p sum
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment