Code Kata: staňte sa lepším programátorom

Vše okolo vývoje aplikací pro platformy Windows Phone a Windows 10 Mobile
RSTEIN
nováček
nováček
Příspěvky: 41
Registrován: ned pro 23, 2007 16:33

Code Kata: staňte sa lepším programátorom

Příspěvek od RSTEIN »

@Matajon Ale řekl bych, že tohle tu katu nesplní ne? ;) Vypíše se Fizz[]Buzz, ale ne ostatní čísla do stovky.
Matajon
můj třetí příspěvek
můj třetí příspěvek
Příspěvky: 3
Registrován: čtv srp 09, 2012 10:08
Zařízení: Samsung Omnia 7
Bydliště: Dobruška

Code Kata: staňte sa lepším programátorom

Příspěvek od Matajon »

RSTEIN píše:@Matajon Ale řekl bych, že tohle tu katu nesplní ne? ;) Vypíše se Fizz[]Buzz, ale ne ostatní čísla do stovky.
To jsem si taky uvědomil chvíli po tom, co jsem to poslal a ten příspěvek jsem smazal. :-)
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Matajon píše:To jsem si taky uvědomil chvíli po tom, co jsem to poslal a ten příspěvek jsem smazal.
Tak daj fungujúce riešenie
Petrroll
přispěvatel
přispěvatel
Příspěvky: 92
Registrován: sob bře 06, 2010 15:24
Zařízení: Samsung galaxy S

Code Kata: staňte sa lepším programátorom

Příspěvek od Petrroll »

Úplně jsem zapomněl tuhle KATU odevzdat (takže se zpožděním):

Kód: Vybrat vše

        private static void fizzbuzz_normal()
        {
            string output = string.Empty;
            for (int i = 0; i <= 100; i++)
            {
                if (i % 3 == 0)
                { output += "fizz"; }

                if (i % 5 == 0)
                { output += "buzz"; }

                if (output == string.Empty)
                { output = i.ToString(); }

                Console.WriteLine(output);
                output = string.Empty;
            }
        }
Bude tenhle týden zas další? I když byla tahle jednoduchá, tak je to příjemný procvičení na pár minutek (tahle doslova na pár).
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Napíšte funkciu na výpočet n-tého Fibonacciho čísla. Túto funkciu postupne zdokonaľujte, vykonajte 2-3 iterácie zlepšovania.

Termín: štvrtok 6.8.2012

Hint k iterácií:
Rekurzia -> Rekurzia s pamäťou / Lazy vyhodnocovanie -> Rekurzia s continuation -> cyklus (Fold fo funkcionálnom jazyku)

(priamy matematický výpočet zo zlatého rezu, Pasacalovho trojuholníka)

(písmo je rovnakej farby ako pozadie, je potrebné blok označiť a ukáže sa)
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Nikto nič? Veď je to jednoduché?
mvacha
nováček
nováček
Příspěvky: 9
Registrován: pon lis 14, 2011 17:23
Zařízení: Nokia Lumia 800 (modrá), Samsung Omnia 7

Code Kata: staňte sa lepším programátorom

Příspěvek od mvacha »

Kód: Vybrat vše

         static int NthFibonacci(int n)
        {
            if (n == 0)
                return 0;
            else if (n == 1)
                return 1;
            else
                return NthFibonacci(n - 1) + NthFibonacci(n - 2);
        }

         static int NthFibonacci2(int n)
         {
             int result = 0;
             int prev = 0;
             int prevPrev = 0;

             for(int i = 0; i <= n; i++)
             {
                 if (i == 1)
                 {
                     result = 1;
                 }
                 else
                 {
                     result = prevPrev + prev;
                 }
                prevPrev = prev;
                prev = result;
             }

             return result;

         }
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Skús ešte jednu iteráciu, napríklad niečo z hintu
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Nedá mi to nespomenúť. Rozmýšľal som, ako vygenerovať všetky permutácie stringu (alebo všeobecne zoznamu), lenivo som to hodil do google a bol som zhrozený, ako zložito to ľudia píšu. Od TDD mánie až po objektový fetišizmus. Tak som si to skúsil, v F# to išlo ľahko ale bol som prekvapený, že v C# to tiež nie som schopný napísať jednoducho, jedine, že doslova prepíšem F# kód. Ako by ste generovali permutácie vy?
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

No cykly, práve že v C# som sa hrozne zasekol. V F# som vymyslel toto

Kód: Vybrat vše

let rec permutations (input: 'a list) = seq {
    if (input.IsEmpty) then 
        yield []
    else
        
            for i in input do
            yield! input
                    |> List.filter (fun x-> x<> i) 
                    |> permutations
                    |> Seq.map (fun x->i::x)
    }
ale C# bol len obyčajný prepis na

Kód: Vybrat vše

public IEnumerable<IEnumerable<T>> Permutation<T>(IEnumerable<T> input)
{            
    if (input == null || !input.Any()) yield break;
    if (input.Count() == 1) yield return input;

    foreach (var item in input)
    {
        var next  = input.Where(l => !l.Equals(item)).ToList();
        foreach (var perm in Permutation(next))
        {
            yield return (new List<T>{item}).Concat(perm);
        }
    }
}
Daj tie cykly, asi už neviem uvažovať jednoducho. Najmä keď som videl rôzne objektové svinstvá, čo mi google našiel,
matoman
smartmaniak
smartmaniak
Příspěvky: 1163
Registrován: sob lis 10, 2007 11:56
Zařízení: Nokia Lumia 920

Code Kata: staňte sa lepším programátorom

Příspěvek od matoman »

nechce sa mi to pisat ale asi takto: http://php.vrana.cz/permutace.php" onclick="window.open(this.href);return false;

proste jednoducha rekurzia:

Kód: Vybrat vše

foreach i in X
 permutacia = (i, permutacia X\i)
Edit: vidim, ze ty to v tom C# mas podobne.. Co sa ti na tom nepaci?
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

Ten prepis do C# sa mi nezdá, je to nejaké divné a kostrbaté a ak by som nepoužil yield ani neviem ako by som to napísal.

V taktom Haskelli, tam by to bola krása :)

Kód: Vybrat vše

perms [] = [[]]
perms xs = [ x:ps | x <- xs , ps <- perms ( xs\\[x] ) ]
matoman
smartmaniak
smartmaniak
Příspěvky: 1163
Registrován: sob lis 10, 2007 11:56
Zařízení: Nokia Lumia 920

Code Kata: staňte sa lepším programátorom

Příspěvek od matoman »

Napadla ma nova kata:

Napiste program, ktory pre danu permutaciu, vrati dalisu v poradi (pri lexikografickom usporiadani)
Igor Kulman
častý přispěvatel
častý přispěvatel
Příspěvky: 228
Registrován: stř bře 28, 2012 12:46
Zařízení: ano

Code Kata: staňte sa lepším programátorom

Příspěvek od Igor Kulman »

matoman píše:Napadla ma nova kata:

Napiste program, ktory pre danu permutaciu, vrati dalisu v poradi (pri lexikografickom usporiadani)
To daval Kryl :)
Odpovědět

Zpět na „Programování a vývoj“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti