update
This commit is contained in:
parent
1f1ad49427
commit
6f050a029e
2496 changed files with 37609 additions and 3031 deletions
|
|
@ -1,48 +1,25 @@
|
|||
#include <iostream>
|
||||
|
||||
template <int n, int m3, int m5>
|
||||
struct fizzbuzz : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
fizzbuzz()
|
||||
{ std::cout << n << std::endl; }
|
||||
};
|
||||
|
||||
template <int n>
|
||||
struct fizzbuzz<n, 0, 0> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
fizzbuzz()
|
||||
{ std::cout << "FizzBuzz" << std::endl; }
|
||||
};
|
||||
|
||||
template <int n, int p>
|
||||
struct fizzbuzz<n, 0, p> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
fizzbuzz()
|
||||
{ std::cout << "Fizz" << std::endl; }
|
||||
};
|
||||
|
||||
template <int n, int p>
|
||||
struct fizzbuzz<n, p, 0> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
fizzbuzz()
|
||||
{ std::cout << "Buzz" << std::endl; }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct fizzbuzz<0,0,0>
|
||||
{
|
||||
fizzbuzz()
|
||||
{ std::cout << 0 << std::endl; }
|
||||
};
|
||||
|
||||
template <int n>
|
||||
struct fb_run
|
||||
{
|
||||
fizzbuzz<n, n%3, n%5> fb;
|
||||
};
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
|
||||
int main()
|
||||
{
|
||||
fb_run<100> fb;
|
||||
std::vector<int> range(100);
|
||||
std::iota(range.begin(), range.end(), 1);
|
||||
|
||||
std::vector<std::string> values;
|
||||
values.resize(range.size());
|
||||
|
||||
auto fizzbuzz = [](int i) -> std::string {
|
||||
if ((i%15) == 0) return "FizzBuzz";
|
||||
if ((i%5) == 0) return "Buzz";
|
||||
if ((i%3) == 0) return "Fizz";
|
||||
return std::to_string(i);
|
||||
};
|
||||
|
||||
std::transform(range.begin(), range.end(), values.begin(), fizzbuzz);
|
||||
|
||||
for (auto& str: values) std::cout << str << std::endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,164 +1,48 @@
|
|||
#include <iostream>
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <boost/mpl/string.hpp>
|
||||
#include <boost/mpl/fold.hpp>
|
||||
#include <boost/mpl/size_t.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace boost;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// exponentiation calculations
|
||||
template <int accum, int base, int exp> struct POWER_CORE : POWER_CORE<accum * base, base, exp - 1>{};
|
||||
|
||||
template <int accum, int base>
|
||||
struct POWER_CORE<accum, base, 0>
|
||||
template <int n, int m3, int m5>
|
||||
struct fizzbuzz : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
enum : int { val = accum };
|
||||
fizzbuzz()
|
||||
{ std::cout << n << std::endl; }
|
||||
};
|
||||
|
||||
template <int base, int exp> struct POWER : POWER_CORE<1, base, exp>{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// # of digit calculations
|
||||
template <int depth, unsigned int i> struct NUM_DIGITS_CORE : NUM_DIGITS_CORE<depth + 1, i / 10>{};
|
||||
|
||||
template <int depth>
|
||||
struct NUM_DIGITS_CORE<depth, 0>
|
||||
template <int n>
|
||||
struct fizzbuzz<n, 0, 0> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
enum : int { val = depth};
|
||||
fizzbuzz()
|
||||
{ std::cout << "FizzBuzz" << std::endl; }
|
||||
};
|
||||
|
||||
template <int i> struct NUM_DIGITS : NUM_DIGITS_CORE<0, i>{};
|
||||
|
||||
template <>
|
||||
struct NUM_DIGITS<0>
|
||||
template <int n, int p>
|
||||
struct fizzbuzz<n, 0, p> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
enum : int { val = 1 };
|
||||
fizzbuzz()
|
||||
{ std::cout << "Fizz" << std::endl; }
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert digit to character (1 -> '1')
|
||||
template <int i>
|
||||
struct DIGIT_TO_CHAR
|
||||
template <int n, int p>
|
||||
struct fizzbuzz<n, p, 0> : fizzbuzz<n-1, (n-1)%3, (n-1)%5>
|
||||
{
|
||||
enum : char{ val = i + 48 };
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Find the digit at a given offset into a number of the form 0000000017
|
||||
template <unsigned int i, int place> // place -> [0 .. 10]
|
||||
struct DIGIT_AT
|
||||
{
|
||||
enum : char{ val = (i / POWER<10, place>::val) % 10 };
|
||||
};
|
||||
|
||||
struct NULL_CHAR
|
||||
{
|
||||
enum : char{ val = '\0' };
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert the digit at a given offset into a number of the form '0000000017' to a character
|
||||
template <unsigned int i, int place> // place -> [0 .. 9]
|
||||
struct ALT_CHAR : DIGIT_TO_CHAR< DIGIT_AT<i, place>::val >{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert the digit at a given offset into a number of the form '17' to a character
|
||||
|
||||
// Template description, with specialization to generate null characters for out of range offsets
|
||||
template <unsigned int i, int offset, int numDigits, bool inRange>
|
||||
struct OFFSET_CHAR_CORE_CHECKED{};
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, false> : NULL_CHAR{};
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, true> : ALT_CHAR<i, (numDigits - offset) - 1 >{};
|
||||
|
||||
// Perform the range check and pass it on
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE : OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, offset < numDigits>{};
|
||||
|
||||
// Calc the number of digits and pass it on
|
||||
template <unsigned int i, int offset>
|
||||
struct OFFSET_CHAR : OFFSET_CHAR_CORE<i, offset, NUM_DIGITS<i>::val>{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Integer to char* template. Works on unsigned ints.
|
||||
template <unsigned int i>
|
||||
struct IntToStr
|
||||
{
|
||||
const static char str[];
|
||||
typedef typename mpl::string<
|
||||
OFFSET_CHAR<i, 0>::val,
|
||||
OFFSET_CHAR<i, 1>::val,
|
||||
OFFSET_CHAR<i, 2>::val,
|
||||
OFFSET_CHAR<i, 3>::val,
|
||||
OFFSET_CHAR<i, 4>::val,
|
||||
OFFSET_CHAR<i, 5>::val,
|
||||
/*OFFSET_CHAR<i, 6>::val,
|
||||
OFFSET_CHAR<i, 7>::val,
|
||||
OFFSET_CHAR<i, 8>::val,
|
||||
OFFSET_CHAR<i, 9>::val,*/
|
||||
NULL_CHAR::val>::type type;
|
||||
};
|
||||
|
||||
template <unsigned int i>
|
||||
const char IntToStr<i>::str[] =
|
||||
{
|
||||
OFFSET_CHAR<i, 0>::val,
|
||||
OFFSET_CHAR<i, 1>::val,
|
||||
OFFSET_CHAR<i, 2>::val,
|
||||
OFFSET_CHAR<i, 3>::val,
|
||||
OFFSET_CHAR<i, 4>::val,
|
||||
OFFSET_CHAR<i, 5>::val,
|
||||
OFFSET_CHAR<i, 6>::val,
|
||||
OFFSET_CHAR<i, 7>::val,
|
||||
OFFSET_CHAR<i, 8>::val,
|
||||
OFFSET_CHAR<i, 9>::val,
|
||||
NULL_CHAR::val
|
||||
};
|
||||
|
||||
template <bool condition, class Then, class Else>
|
||||
struct IF
|
||||
{
|
||||
typedef Then RET;
|
||||
};
|
||||
|
||||
template <class Then, class Else>
|
||||
struct IF<false, Then, Else>
|
||||
{
|
||||
typedef Else RET;
|
||||
};
|
||||
|
||||
|
||||
template < typename Str1, typename Str2 >
|
||||
struct concat : mpl::insert_range<Str1, typename mpl::end<Str1>::type, Str2> {};
|
||||
template <typename Str1, typename Str2, typename Str3 >
|
||||
struct concat3 : mpl::insert_range<Str1, typename mpl::end<Str1>::type, typename concat<Str2, Str3 >::type > {};
|
||||
|
||||
typedef typename mpl::string<'f','i','z','z'>::type fizz;
|
||||
typedef typename mpl::string<'b','u','z','z'>::type buzz;
|
||||
typedef typename mpl::string<'\r', '\n'>::type mpendl;
|
||||
typedef typename concat<fizz, buzz>::type fizzbuzz;
|
||||
|
||||
// discovered boost mpl limitation on some length
|
||||
|
||||
template <int N>
|
||||
struct FizzBuzz
|
||||
{
|
||||
typedef typename concat3<typename FizzBuzz<N - 1>::type, typename IF<N % 15 == 0, typename fizzbuzz::type, typename IF<N % 3 == 0, typename fizz::type, typename IF<N % 5 == 0, typename buzz::type, typename IntToStr<N>::type >::RET >::RET >::RET, typename mpendl::type>::type type;
|
||||
fizzbuzz()
|
||||
{ std::cout << "Buzz" << std::endl; }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FizzBuzz<1>
|
||||
struct fizzbuzz<0,0,0>
|
||||
{
|
||||
typedef mpl::string<'1','\r','\n'>::type type;
|
||||
fizzbuzz()
|
||||
{ std::cout << 0 << std::endl; }
|
||||
};
|
||||
|
||||
int main(int argc, char** argv)
|
||||
template <int n>
|
||||
struct fb_run
|
||||
{
|
||||
const int n = 7;
|
||||
std::cout << mpl::c_str<FizzBuzz<n>::type>::value << std::endl;
|
||||
return 0;
|
||||
fizzbuzz<n, n%3, n%5> fb;
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
fb_run<100> fb;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
164
Task/FizzBuzz/C++/fizzbuzz-5.cpp
Normal file
164
Task/FizzBuzz/C++/fizzbuzz-5.cpp
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
#include <iostream>
|
||||
#include <string>
|
||||
#include <cstdlib>
|
||||
#include <boost/mpl/string.hpp>
|
||||
#include <boost/mpl/fold.hpp>
|
||||
#include <boost/mpl/size_t.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace boost;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// exponentiation calculations
|
||||
template <int accum, int base, int exp> struct POWER_CORE : POWER_CORE<accum * base, base, exp - 1>{};
|
||||
|
||||
template <int accum, int base>
|
||||
struct POWER_CORE<accum, base, 0>
|
||||
{
|
||||
enum : int { val = accum };
|
||||
};
|
||||
|
||||
template <int base, int exp> struct POWER : POWER_CORE<1, base, exp>{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// # of digit calculations
|
||||
template <int depth, unsigned int i> struct NUM_DIGITS_CORE : NUM_DIGITS_CORE<depth + 1, i / 10>{};
|
||||
|
||||
template <int depth>
|
||||
struct NUM_DIGITS_CORE<depth, 0>
|
||||
{
|
||||
enum : int { val = depth};
|
||||
};
|
||||
|
||||
template <int i> struct NUM_DIGITS : NUM_DIGITS_CORE<0, i>{};
|
||||
|
||||
template <>
|
||||
struct NUM_DIGITS<0>
|
||||
{
|
||||
enum : int { val = 1 };
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert digit to character (1 -> '1')
|
||||
template <int i>
|
||||
struct DIGIT_TO_CHAR
|
||||
{
|
||||
enum : char{ val = i + 48 };
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Find the digit at a given offset into a number of the form 0000000017
|
||||
template <unsigned int i, int place> // place -> [0 .. 10]
|
||||
struct DIGIT_AT
|
||||
{
|
||||
enum : char{ val = (i / POWER<10, place>::val) % 10 };
|
||||
};
|
||||
|
||||
struct NULL_CHAR
|
||||
{
|
||||
enum : char{ val = '\0' };
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert the digit at a given offset into a number of the form '0000000017' to a character
|
||||
template <unsigned int i, int place> // place -> [0 .. 9]
|
||||
struct ALT_CHAR : DIGIT_TO_CHAR< DIGIT_AT<i, place>::val >{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Convert the digit at a given offset into a number of the form '17' to a character
|
||||
|
||||
// Template description, with specialization to generate null characters for out of range offsets
|
||||
template <unsigned int i, int offset, int numDigits, bool inRange>
|
||||
struct OFFSET_CHAR_CORE_CHECKED{};
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, false> : NULL_CHAR{};
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, true> : ALT_CHAR<i, (numDigits - offset) - 1 >{};
|
||||
|
||||
// Perform the range check and pass it on
|
||||
template <unsigned int i, int offset, int numDigits>
|
||||
struct OFFSET_CHAR_CORE : OFFSET_CHAR_CORE_CHECKED<i, offset, numDigits, offset < numDigits>{};
|
||||
|
||||
// Calc the number of digits and pass it on
|
||||
template <unsigned int i, int offset>
|
||||
struct OFFSET_CHAR : OFFSET_CHAR_CORE<i, offset, NUM_DIGITS<i>::val>{};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Integer to char* template. Works on unsigned ints.
|
||||
template <unsigned int i>
|
||||
struct IntToStr
|
||||
{
|
||||
const static char str[];
|
||||
typedef typename mpl::string<
|
||||
OFFSET_CHAR<i, 0>::val,
|
||||
OFFSET_CHAR<i, 1>::val,
|
||||
OFFSET_CHAR<i, 2>::val,
|
||||
OFFSET_CHAR<i, 3>::val,
|
||||
OFFSET_CHAR<i, 4>::val,
|
||||
OFFSET_CHAR<i, 5>::val,
|
||||
/*OFFSET_CHAR<i, 6>::val,
|
||||
OFFSET_CHAR<i, 7>::val,
|
||||
OFFSET_CHAR<i, 8>::val,
|
||||
OFFSET_CHAR<i, 9>::val,*/
|
||||
NULL_CHAR::val>::type type;
|
||||
};
|
||||
|
||||
template <unsigned int i>
|
||||
const char IntToStr<i>::str[] =
|
||||
{
|
||||
OFFSET_CHAR<i, 0>::val,
|
||||
OFFSET_CHAR<i, 1>::val,
|
||||
OFFSET_CHAR<i, 2>::val,
|
||||
OFFSET_CHAR<i, 3>::val,
|
||||
OFFSET_CHAR<i, 4>::val,
|
||||
OFFSET_CHAR<i, 5>::val,
|
||||
OFFSET_CHAR<i, 6>::val,
|
||||
OFFSET_CHAR<i, 7>::val,
|
||||
OFFSET_CHAR<i, 8>::val,
|
||||
OFFSET_CHAR<i, 9>::val,
|
||||
NULL_CHAR::val
|
||||
};
|
||||
|
||||
template <bool condition, class Then, class Else>
|
||||
struct IF
|
||||
{
|
||||
typedef Then RET;
|
||||
};
|
||||
|
||||
template <class Then, class Else>
|
||||
struct IF<false, Then, Else>
|
||||
{
|
||||
typedef Else RET;
|
||||
};
|
||||
|
||||
|
||||
template < typename Str1, typename Str2 >
|
||||
struct concat : mpl::insert_range<Str1, typename mpl::end<Str1>::type, Str2> {};
|
||||
template <typename Str1, typename Str2, typename Str3 >
|
||||
struct concat3 : mpl::insert_range<Str1, typename mpl::end<Str1>::type, typename concat<Str2, Str3 >::type > {};
|
||||
|
||||
typedef typename mpl::string<'f','i','z','z'>::type fizz;
|
||||
typedef typename mpl::string<'b','u','z','z'>::type buzz;
|
||||
typedef typename mpl::string<'\r', '\n'>::type mpendl;
|
||||
typedef typename concat<fizz, buzz>::type fizzbuzz;
|
||||
|
||||
// discovered boost mpl limitation on some length
|
||||
|
||||
template <int N>
|
||||
struct FizzBuzz
|
||||
{
|
||||
typedef typename concat3<typename FizzBuzz<N - 1>::type, typename IF<N % 15 == 0, typename fizzbuzz::type, typename IF<N % 3 == 0, typename fizz::type, typename IF<N % 5 == 0, typename buzz::type, typename IntToStr<N>::type >::RET >::RET >::RET, typename mpendl::type>::type type;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct FizzBuzz<1>
|
||||
{
|
||||
typedef mpl::string<'1','\r','\n'>::type type;
|
||||
};
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const int n = 7;
|
||||
std::cout << mpl::c_str<FizzBuzz<n>::type>::value << std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
* FIZZBUZZ.COB
|
||||
* cobc -x -g FIZZBUZZ.COB
|
||||
*
|
||||
* FIZZBUZZ.COB
|
||||
* cobc -x -g FIZZBUZZ.COB
|
||||
*
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. fizzbuzz.
|
||||
DATA DIVISION.
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
01 REM PIC 9(03) VALUE 0.
|
||||
01 QUOTIENT PIC 9(03) VALUE 0.
|
||||
PROCEDURE DIVISION.
|
||||
*
|
||||
*
|
||||
PERFORM UNTIL CNT > 100
|
||||
DIVIDE 15 INTO CNT GIVING QUOTIENT REMAINDER REM
|
||||
IF REM = 0
|
||||
|
|
|
|||
17
Task/FizzBuzz/FBSL/fizzbuzz.fbsl
Normal file
17
Task/FizzBuzz/FBSL/fizzbuzz.fbsl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
#APPTYPE CONSOLE
|
||||
|
||||
DIM numbers AS STRING
|
||||
DIM imod5 AS INTEGER
|
||||
DIM imod3 AS INTEGER
|
||||
|
||||
FOR DIM i = 1 TO 100
|
||||
numbers = ""
|
||||
imod3 = i MOD 3
|
||||
imod5 = i MOD 5
|
||||
IF NOT imod3 THEN numbers = "Fizz"
|
||||
IF NOT imod5 THEN numbers = numbers & "Buzz"
|
||||
IF imod3 AND imod5 THEN numbers = i
|
||||
PRINT numbers, " ";
|
||||
NEXT
|
||||
|
||||
PAUSE
|
||||
|
|
@ -1,10 +1,11 @@
|
|||
package main
|
||||
|
||||
import "fmt"
|
||||
|
||||
func main() {
|
||||
for i := 1; i <= 100; i++ {
|
||||
switch {
|
||||
case (i%3==0) && (i%5==0):
|
||||
case i%15==0:
|
||||
fmt.Println("FizzBuzz")
|
||||
case i%3==0:
|
||||
fmt.Println("Fizz")
|
||||
|
|
|
|||
10
Task/FizzBuzz/Haskell/fizzbuzz-5.hs
Normal file
10
Task/FizzBuzz/Haskell/fizzbuzz-5.hs
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
fizzBuzz :: (Integral a) => a -> String
|
||||
fizzBuzz i
|
||||
| fizz && buzz = "FizzBuzz"
|
||||
| fizz = "Fizz"
|
||||
| buzz = "Buzz"
|
||||
| otherwise = show i
|
||||
where fizz = i `mod` 3 == 0
|
||||
buzz = i `mod` 5 == 0
|
||||
|
||||
main = mapM_ (putStrLn . fizzBuzz) [1..100]
|
||||
|
|
@ -1,4 +1,7 @@
|
|||
Table[If[# === "", i, #]&@StringJoin[
|
||||
Table[If[Divisible[i, First@nw], Last@nw, ""],
|
||||
{nw, {{3, "Fizz"}, {5, "Buzz"}}}]],
|
||||
{i, 1, 100}]
|
||||
SetAttributes[f,Listable]
|
||||
f[n_ /; Mod[n, 15] == 0] := "FizzBuzz";
|
||||
f[n_ /; Mod[n, 3] == 0] := "Fizz";
|
||||
f[n_ /; Mod[n, 5] == 0] := "Buzz";
|
||||
f[n_] := n;
|
||||
|
||||
f[Range[100]]
|
||||
|
|
|
|||
4
Task/FizzBuzz/Mathematica/fizzbuzz-4.math
Normal file
4
Task/FizzBuzz/Mathematica/fizzbuzz-4.math
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Table[If[# === "", i, #]&@StringJoin[
|
||||
Table[If[Divisible[i, First@nw], Last@nw, ""],
|
||||
{nw, {{3, "Fizz"}, {5, "Buzz"}}}]],
|
||||
{i, 1, 100}]
|
||||
1
Task/FizzBuzz/Mathematica/fizzbuzz-5.math
Normal file
1
Task/FizzBuzz/Mathematica/fizzbuzz-5.math
Normal file
|
|
@ -0,0 +1 @@
|
|||
Which[ Mod[#,15] == 0, "FizzBuzz", Mod[#, 3] == 0, "Fizz", Mod[#,5]==0, "Buzz", True, #]& /@ Range[1,100]
|
||||
11
Task/FizzBuzz/REALbasic/fizzbuzz.realbasic
Normal file
11
Task/FizzBuzz/REALbasic/fizzbuzz.realbasic
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
For i As Integer = 1 To 100
|
||||
If i mod 3 = 0 And i mod 5 = 0 Then
|
||||
Print("FizzBuzz")
|
||||
ElseIf i mod 3 = 0 Then
|
||||
Print("Fizz")
|
||||
ElseIf i mod 5 = 0 Then
|
||||
Print("Buzz")
|
||||
Else
|
||||
Print(Str(i))
|
||||
End If
|
||||
Next
|
||||
8
Task/FizzBuzz/Ruby/fizzbuzz-8.rb
Normal file
8
Task/FizzBuzz/Ruby/fizzbuzz-8.rb
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fizzbuzz = ->(i) do
|
||||
(i%15).zero? and next "FizzBuzz"
|
||||
(i%3).zero? and next "Fizz"
|
||||
(i%5).zero? and next "Buzz"
|
||||
i
|
||||
end
|
||||
|
||||
puts (1..100).map(&fizzbuzz).join("\n")
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
for i = 1 to 100
|
||||
print i;
|
||||
if (i mod 3) = 0 then print " Fuzz";
|
||||
if (i mod 5) = 0 then print " Buzz";
|
||||
if (i mod 15) = 0 then print " FuzzBuzz";
|
||||
if (i mod 3) = 0 then print " Fuzz";
|
||||
if (i mod 5) = 0 then print " Buzz";
|
||||
print
|
||||
next i
|
||||
|
|
|
|||
40
Task/FizzBuzz/Sed/fizzbuzz.sed
Normal file
40
Task/FizzBuzz/Sed/fizzbuzz.sed
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
#n
|
||||
# doesn't work if there's no input
|
||||
# initialize counters (0 = empty) and value
|
||||
s/.*/ 0/
|
||||
: loop
|
||||
# increment counters, set carry
|
||||
s/^\(a*\) \(b*\) \([0-9][0-9]*\)/\1a \2b \3@/
|
||||
# propagate carry
|
||||
: carry
|
||||
s/ @/ 1/
|
||||
s/9@/@0/
|
||||
s/8@/9/
|
||||
s/7@/8/
|
||||
s/6@/7/
|
||||
s/5@/6/
|
||||
s/4@/5/
|
||||
s/3@/4/
|
||||
s/2@/3/
|
||||
s/1@/2/
|
||||
s/0@/1/
|
||||
/@/b carry
|
||||
# save state
|
||||
h
|
||||
# handle factors
|
||||
s/aaa/Fizz/
|
||||
s/bbbbb/Buzz/
|
||||
# strip value if any factor
|
||||
/z/s/[0-9]//g
|
||||
# strip counters and spaces
|
||||
s/[ab ]//g
|
||||
# output
|
||||
p
|
||||
# restore state
|
||||
g
|
||||
# roll over counters
|
||||
s/aaa//
|
||||
s/bbbbb//
|
||||
# loop until value = 100
|
||||
/100/q
|
||||
b loop
|
||||
Loading…
Add table
Add a link
Reference in a new issue