SlideShare une entreprise Scribd logo
1  sur  16
ELŐADÓK:
Nagy Gergely (@algernoone)
Magyar Attila (@athoshun)
Coding dojo
BalaBit IT Security
Egy LISP program vége
)))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))
))))))))))))))))))))))))
))))))))))))))))))))
)))))))))))))))
)))))))))))))
)))))))))
)))))))
))))))
))))
)))
)
Egy Java program vége
}
}
}
}
}
}
}
}
}
}
}
}
● Írjon olyan programot, ami felsorolja az
egész számokat 1-100-ig úgy, hogy:
● a 3 többszörösei helyett azt írja ki, hogy "Fizz"
● az 5 többszörösei helyett azt írja ki, hogy "Buzz"
● a 3 és az 5 többszörösei helyett azt írja ki, hogy
"FizzBuzz"
FizzBuzz
● Írjon olyan programot, ami felsorolja az
egész számokat 1-100-ig úgy, hogy:
● a 3 többszörösei helyett azt írja ki, hogy "Fizz"
● az 5 többszörösei helyett azt írja ki, hogy "Buzz"
● a 3 és az 5 többszörösei helyett azt írja ki, hogy
"FizzBuzz"
FizzBuzz
1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11,
Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz,
Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29,
FizzBuzz, ...
Naiv megoldás
int i;
for (i = 1; i != 101; ++i) {
if (i % 3 == 0) {
printf("Fizz");
}
if (i % 5 == 0) {
printf("Buzz");
}
if (i % 3 != 0 && i % 5 != 0) {
printf("%d", i);
}
printf("n");
}
● 7 többszöröseinél "Beep"
● 3 és 7 → "FizzBeep"
● 5 és 7 → "BuzzBeep"
● 3, 5 és 7 → "FizzBuzzBeep"
Változó világban élünk
Naiv megoldás
int i;
for (i = 1; i != 101; ++i) {
if (i % 3 == 0) {
printf("Fizz");
}
if (i % 5 == 0) {
printf("Buzz");
}
if (i % 7 == 0) {
printf("Beep");
}
if (i % 3 != 0 && i % 5 != 0 && i % 7 != 0) {
printf("%d", i);
}
printf("n");
}
● ha szerepel a 3-as számjegy, akkor is
"Fizz"
● 5-ös számjegy → "Buzz"
● 7-es számjegy → "Beep"
Változó világban élünk
Naiv megoldás
int i, is_fizz, is_buzz, is_beep; char buf[16];
for (i = 1; i != 101; ++i) {
snprintf(buf, sizeof(buf), "%d", i);
if (is_fizz = (i % 3 == 0 || strchr(buf, '3'))) {
printf("Fizz");
}
if (is_buzz = (i % 5 == 0 || strchr(buf, '5'))) {
printf("Buzz");
}
if (is_beep = (i % 7 == 0 || strchr(buf, '7'))) {
printf("Beep");
}
if (!is_fizz && !is_buzz && !is_beep) {
printf("%d", i);
}
printf("n");
}
@staticmethod
def fizzbuzz(min, max):
translators = [ DivisorBasedTranslator(3, "Fizz"),
DivisorBasedTranslator(5, "Buzz"),
DefaultTranslator() ]
return (FizzBuzz(CompositeTranslator(translators))
.generate(min, max))
(defn fizzbuzz [min max]
(fizzbuzz* min max
[(partial translate:by-divisor 3 "Fizz")
(partial translate:by-divisor 5 "Buzz")]))
class FizzBuzz(object):
def __init__(self, translator):
self.translator = translator
def generate(self, min, max):
sequence = []
for i in range(min, max + 1):
sequence.append(
self.translator.translate(i, ""))
return ", ".join(sequence)
(defn fizzbuzz* [min max translations]
(->> (range min (inc max))
(map (partial translate translations))
(interpose ", ")
(s/join)))
class DivisorBasedTranslator(NumberTranslator):
def __init__(self, divisor, translation):
self.divisor = divisor
self.translation = translation
def translate(self, number, partially_translated):
if number % self.divisor == 0:
return self.translation
return ""
(defn translate:by-divisor [divisor replacement n]
(when (zero? (rem n divisor)) replacement))
It's not the tool – it's the artist
ELŐADÓK:
Nagy Gergely (@algernoone)
Magyar Attila (@athoshun)
Köszönjük a figyelmet!
BalaBit IT Security

Contenu connexe

En vedette

GFY – Albatros avancerede online strategi v. Jesper Dichmann, marketingdirek...
GFY – Albatros avancerede online strategi  v. Jesper Dichmann, marketingdirek...GFY – Albatros avancerede online strategi  v. Jesper Dichmann, marketingdirek...
GFY – Albatros avancerede online strategi v. Jesper Dichmann, marketingdirek...FrontPage Google
 
NOVICOR Consultancy for Technology
NOVICOR Consultancy for TechnologyNOVICOR Consultancy for Technology
NOVICOR Consultancy for TechnologyMustafa Kuğu
 
Affiliate Dag 2012 Roger Dooley
Affiliate Dag 2012 Roger DooleyAffiliate Dag 2012 Roger Dooley
Affiliate Dag 2012 Roger DooleyAffiliate Dag
 
Ficha de-trabalho-1-quc3admica
Ficha de-trabalho-1-quc3admicaFicha de-trabalho-1-quc3admica
Ficha de-trabalho-1-quc3admicaAndreia Margarido
 
Does Game-Based Learning Work? Results from Three Recent Studies
Does Game-Based Learning Work? Results from Three Recent StudiesDoes Game-Based Learning Work? Results from Three Recent Studies
Does Game-Based Learning Work? Results from Three Recent StudiesNurnabihah Mohamad Nizar
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésOpen Academy
 
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDF
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDFMẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDF
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDFSFP
 
Festival ifi kids ru
Festival ifi kids ruFestival ifi kids ru
Festival ifi kids ruZauralochka
 
İSTANBUL ÜSKÜDAR LİSESİ-WİKİ
İSTANBUL ÜSKÜDAR LİSESİ-WİKİİSTANBUL ÜSKÜDAR LİSESİ-WİKİ
İSTANBUL ÜSKÜDAR LİSESİ-WİKİyuceltuzun
 
Bex Accessories Social Promotion
Bex Accessories Social PromotionBex Accessories Social Promotion
Bex Accessories Social PromotionLinh MP. Pham
 
June 2014 Wealthbuilder Stock Market Brief.
June 2014 Wealthbuilder Stock Market Brief.June 2014 Wealthbuilder Stock Market Brief.
June 2014 Wealthbuilder Stock Market Brief.Wealthbuilder.ie
 

En vedette (19)

Mi àlbum
Mi àlbumMi àlbum
Mi àlbum
 
GFY – Albatros avancerede online strategi v. Jesper Dichmann, marketingdirek...
GFY – Albatros avancerede online strategi  v. Jesper Dichmann, marketingdirek...GFY – Albatros avancerede online strategi  v. Jesper Dichmann, marketingdirek...
GFY – Albatros avancerede online strategi v. Jesper Dichmann, marketingdirek...
 
Moodle
MoodleMoodle
Moodle
 
GLS
GLSGLS
GLS
 
Lab8 ubuntu terminal
Lab8 ubuntu terminalLab8 ubuntu terminal
Lab8 ubuntu terminal
 
Building Webs Better
Building Webs BetterBuilding Webs Better
Building Webs Better
 
NOVICOR Consultancy for Technology
NOVICOR Consultancy for TechnologyNOVICOR Consultancy for Technology
NOVICOR Consultancy for Technology
 
اماني محمود
اماني محموداماني محمود
اماني محمود
 
Looa-productenmatrix
Looa-productenmatrixLooa-productenmatrix
Looa-productenmatrix
 
Affiliate Dag 2012 Roger Dooley
Affiliate Dag 2012 Roger DooleyAffiliate Dag 2012 Roger Dooley
Affiliate Dag 2012 Roger Dooley
 
Ficha de-trabalho-1-quc3admica
Ficha de-trabalho-1-quc3admicaFicha de-trabalho-1-quc3admica
Ficha de-trabalho-1-quc3admica
 
Does Game-Based Learning Work? Results from Three Recent Studies
Does Game-Based Learning Work? Results from Three Recent StudiesDoes Game-Based Learning Work? Results from Three Recent Studies
Does Game-Based Learning Work? Results from Three Recent Studies
 
BlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztésBlackBerry10 alapú natív alkalmazásfejlesztés
BlackBerry10 alapú natív alkalmazásfejlesztés
 
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDF
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDFMẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDF
MẪU BÁO CÁO KIỂM TOÁN HỆ THỐNG CƠ ĐIỆN TÒA NHÀ CHUNG CƯ.PDF
 
Festival ifi kids ru
Festival ifi kids ruFestival ifi kids ru
Festival ifi kids ru
 
İSTANBUL ÜSKÜDAR LİSESİ-WİKİ
İSTANBUL ÜSKÜDAR LİSESİ-WİKİİSTANBUL ÜSKÜDAR LİSESİ-WİKİ
İSTANBUL ÜSKÜDAR LİSESİ-WİKİ
 
Imágenes del departamento de durazno
Imágenes del departamento de duraznoImágenes del departamento de durazno
Imágenes del departamento de durazno
 
Bex Accessories Social Promotion
Bex Accessories Social PromotionBex Accessories Social Promotion
Bex Accessories Social Promotion
 
June 2014 Wealthbuilder Stock Market Brief.
June 2014 Wealthbuilder Stock Market Brief.June 2014 Wealthbuilder Stock Market Brief.
June 2014 Wealthbuilder Stock Market Brief.
 

Plus de Open Academy

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálvaOpen Academy
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...Open Academy
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profilingOpen Academy
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyűOpen Academy
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztésOpen Academy
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világaOpen Academy
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOpen Academy
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanOpen Academy
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanOpen Academy
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiOpen Academy
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatbanOpen Academy
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Open Academy
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Open Academy
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésOpen Academy
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekOpen Academy
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Open Academy
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenOpen Academy
 

Plus de Open Academy (19)

BDD demisztifikálva
BDD demisztifikálvaBDD demisztifikálva
BDD demisztifikálva
 
What SQL should actually be...
What SQL should actually be...What SQL should actually be...
What SQL should actually be...
 
Dev tools rendering & memory profiling
Dev tools rendering & memory profilingDev tools rendering & memory profiling
Dev tools rendering & memory profiling
 
Firefox OS: hackelni könnyű
Firefox OS:  hackelni könnyűFirefox OS:  hackelni könnyű
Firefox OS: hackelni könnyű
 
Android fejlesztés
Android fejlesztésAndroid fejlesztés
Android fejlesztés
 
Magvas gondolatok
Magvas gondolatokMagvas gondolatok
Magvas gondolatok
 
A Windows Phone világa
A Windows Phone világaA Windows Phone világa
A Windows Phone világa
 
Okostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentjeOkostelefonok és táblagépek menedzsmentje
Okostelefonok és táblagépek menedzsmentje
 
Windows 8
Windows 8Windows 8
Windows 8
 
Ipari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatbanIpari felhő infrastruktúrák a gyakorlatban
Ipari felhő infrastruktúrák a gyakorlatban
 
Túlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világábanTúlélés a Három Betűs Rövidítések világában
Túlélés a Három Betűs Rövidítések világában
 
Adminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségeiAdminisztratív protokollok ellenőrzési lehetőségei
Adminisztratív protokollok ellenőrzési lehetőségei
 
Naplózás a gyakorlatban
Naplózás a gyakorlatbanNaplózás a gyakorlatban
Naplózás a gyakorlatban
 
Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!Hogyan optimalizáljunk C/C++ kódokat!
Hogyan optimalizáljunk C/C++ kódokat!
 
Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?Hogy kerül a csizma az asztalra?
Hogy kerül a csizma az asztalra?
 
AGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztésAGILIS / SCRUM fejlesztés
AGILIS / SCRUM fejlesztés
 
Multiplatform mobil fejlesztések
Multiplatform mobil fejlesztésekMultiplatform mobil fejlesztések
Multiplatform mobil fejlesztések
 
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
Webműves Kelemen tanácsai, avagy mi kell a PHP falába?
 
Verziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekbenVerziókövető rendszerek alkalmazása fejlesztési projektekben
Verziókövető rendszerek alkalmazása fejlesztési projektekben
 

Coding dojo

  • 1. ELŐADÓK: Nagy Gergely (@algernoone) Magyar Attila (@athoshun) Coding dojo BalaBit IT Security
  • 2. Egy LISP program vége ))))))))))))))))))))))))))))))) ))))))))))))))))))))))))))) )))))))))))))))))))))))) )))))))))))))))))))) ))))))))))))))) ))))))))))))) ))))))))) ))))))) )))))) )))) ))) )
  • 3. Egy Java program vége } } } } } } } } } } } }
  • 4. ● Írjon olyan programot, ami felsorolja az egész számokat 1-100-ig úgy, hogy: ● a 3 többszörösei helyett azt írja ki, hogy "Fizz" ● az 5 többszörösei helyett azt írja ki, hogy "Buzz" ● a 3 és az 5 többszörösei helyett azt írja ki, hogy "FizzBuzz" FizzBuzz
  • 5. ● Írjon olyan programot, ami felsorolja az egész számokat 1-100-ig úgy, hogy: ● a 3 többszörösei helyett azt írja ki, hogy "Fizz" ● az 5 többszörösei helyett azt írja ki, hogy "Buzz" ● a 3 és az 5 többszörösei helyett azt írja ki, hogy "FizzBuzz" FizzBuzz 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, FizzBuzz, ...
  • 6. Naiv megoldás int i; for (i = 1; i != 101; ++i) { if (i % 3 == 0) { printf("Fizz"); } if (i % 5 == 0) { printf("Buzz"); } if (i % 3 != 0 && i % 5 != 0) { printf("%d", i); } printf("n"); }
  • 7. ● 7 többszöröseinél "Beep" ● 3 és 7 → "FizzBeep" ● 5 és 7 → "BuzzBeep" ● 3, 5 és 7 → "FizzBuzzBeep" Változó világban élünk
  • 8. Naiv megoldás int i; for (i = 1; i != 101; ++i) { if (i % 3 == 0) { printf("Fizz"); } if (i % 5 == 0) { printf("Buzz"); } if (i % 7 == 0) { printf("Beep"); } if (i % 3 != 0 && i % 5 != 0 && i % 7 != 0) { printf("%d", i); } printf("n"); }
  • 9. ● ha szerepel a 3-as számjegy, akkor is "Fizz" ● 5-ös számjegy → "Buzz" ● 7-es számjegy → "Beep" Változó világban élünk
  • 10. Naiv megoldás int i, is_fizz, is_buzz, is_beep; char buf[16]; for (i = 1; i != 101; ++i) { snprintf(buf, sizeof(buf), "%d", i); if (is_fizz = (i % 3 == 0 || strchr(buf, '3'))) { printf("Fizz"); } if (is_buzz = (i % 5 == 0 || strchr(buf, '5'))) { printf("Buzz"); } if (is_beep = (i % 7 == 0 || strchr(buf, '7'))) { printf("Beep"); } if (!is_fizz && !is_buzz && !is_beep) { printf("%d", i); } printf("n"); }
  • 11.
  • 12. @staticmethod def fizzbuzz(min, max): translators = [ DivisorBasedTranslator(3, "Fizz"), DivisorBasedTranslator(5, "Buzz"), DefaultTranslator() ] return (FizzBuzz(CompositeTranslator(translators)) .generate(min, max)) (defn fizzbuzz [min max] (fizzbuzz* min max [(partial translate:by-divisor 3 "Fizz") (partial translate:by-divisor 5 "Buzz")]))
  • 13. class FizzBuzz(object): def __init__(self, translator): self.translator = translator def generate(self, min, max): sequence = [] for i in range(min, max + 1): sequence.append( self.translator.translate(i, "")) return ", ".join(sequence) (defn fizzbuzz* [min max translations] (->> (range min (inc max)) (map (partial translate translations)) (interpose ", ") (s/join)))
  • 14. class DivisorBasedTranslator(NumberTranslator): def __init__(self, divisor, translation): self.divisor = divisor self.translation = translation def translate(self, number, partially_translated): if number % self.divisor == 0: return self.translation return "" (defn translate:by-divisor [divisor replacement n] (when (zero? (rem n divisor)) replacement))
  • 15. It's not the tool – it's the artist
  • 16. ELŐADÓK: Nagy Gergely (@algernoone) Magyar Attila (@athoshun) Köszönjük a figyelmet! BalaBit IT Security