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

Coding dojo

  • 1.
    ELŐADÓK: Nagy Gergely (@algernoone) MagyarAttila (@athoshun) Coding dojo BalaBit IT Security
  • 2.
    Egy LISP programvége ))))))))))))))))))))))))))))))) ))))))))))))))))))))))))))) )))))))))))))))))))))))) )))))))))))))))))))) ))))))))))))))) ))))))))))))) ))))))))) ))))))) )))))) )))) ))) )
  • 3.
    Egy Java programvége } } } } } } } } } } } }
  • 4.
    ● Írjon olyanprogramot, 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 olyanprogramot, 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 szerepela 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"); }
  • 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 thetool – it's the artist
  • 16.
    ELŐADÓK: Nagy Gergely (@algernoone) MagyarAttila (@athoshun) Köszönjük a figyelmet! BalaBit IT Security