Kij i piłka razem kosztują 1,10zł

Kij jest droższy od piłki o złotówkę.

Ile kosztuje piłka?


FizzBuzz to zadanie screeningowe, używane przy rekrutowaniu programistów.

Napisz program, który wypisuje liczby od 1 do 100.
Wielokrotności trójki zastąp **"Fizz"**.
Wielokrotności piątki zastąp **"Buzz"**. 
Wielokrotności trójki oraz piątki zastąp **"FizzBuzz"**.

Więcej informacji o FizzBuzz na przykład tutaj.

Załączam moje rozwiązania: 1 w SQL i 4 w PL/SQL.

SQL 1/1

1
2
3
4
5
6
7
8
9
10
11
12
 SELECT CASE 
           WHEN MOD(level, 15) = 0 THEN
              'FizzBuzz'
           WHEN MOD(level, 03) = 0 THEN
              'Fizz'
           WHEN MOD(level, 05) = 0 THEN
              'Buzz'
          ELSE TO_CHAR(level)
        END fizzbuzz
   FROM dual
CONNECT BY level <= 100;
/

PL/SQL 1/4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
DECLARE
   co_lower_bound CONSTANT PLS_INTEGER := 1;   
   co_upper_bound CONSTANT PLS_INTEGER := 100;
   l_output VARCHAR2(8);
   l_timestamp_start TIMESTAMP;
BEGIN
   DBMS_OUTPUT.ENABLE (buffer_size => NULL);
   l_timestamp_start := systimestamp;

   FOR i IN co_lower_bound..co_upper_bound
   LOOP <<fizzbuzz>>
      l_output := '';
      IF MOD(i,3) = 0 THEN 
         l_output := 'Fizz';
      END IF;
      IF MOD(i,5) = 0 THEN 
         l_output := l_output || 'Buzz';
      END IF;
      DBMS_OUTPUT.PUT_LINE(COALESCE(l_output, TO_CHAR(i)));
   END LOOP fizzbuzz;
   
   DBMS_OUTPUT.PUT_LINE(systimestamp - l_timestamp_start);
END;
/

PL/SQL 2/4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE
   l_output VARCHAR2(8);
BEGIN
   FOR i IN 1..100
   LOOP <<fizzbuzz>>
      l_output := i;
      IF MOD(i,15) = 0 THEN 
         l_output := 'FizzBuzz';
      ELSIF MOD(i,5) = 0 THEN 
         l_output := 'Buzz';
      ELSIF MOD(i,3) = 0 THEN 
         l_output := 'Fizz';
      END IF;
   DBMS_OUTPUT.PUT_LINE(l_output);
   END LOOP fizzbuzz;
END;
/

PL/SQL 3/4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE
   l_output VARCHAR2(8);
BEGIN
   FOR i IN 1..100
   LOOP <<fizzbuzz>>
      CASE
         WHEN MOD(i,3) = 0 AND MOD(i,5) = 0 THEN
            dbms_output.put_line('FizzBuzz');
         WHEN MOD(i,3) = 0 THEN
            dbms_output.put_line('Fizz');
         WHEN MOD(i,5) = 0 THEN
            dbms_output.put_line('Buzz');
         ELSE
            DBMS_OUTPUT.PUT_LINE(i);
      END CASE;
   END LOOP fizzbuzz;
END;
/

PL/SQL 4/4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DECLARE
   fizz BOOLEAN;
   buzz BOOLEAN;
BEGIN
   FOR i IN 1..100
   LOOP <<fizzbuzz>>
      fizz := (MOD(i,3) = 0);
      buzz := (MOD(i,5) = 0);
      CASE 
         WHEN fizz AND buzz THEN 
            DBMS_OUTPUT.PUT_LINE('FizzBuzz');
         WHEN fizz THEN 
            DBMS_OUTPUT.PUT_LINE('Fizz');               
         WHEN buzz THEN 
            DBMS_OUTPUT.PUT_LINE('Buzz');         
         ELSE 
            DBMS_OUTPUT.PUT_LINE(i);
      END CASE;
   END LOOP fizzbuzz;
END;
/