Játékot csinál a C#- és Java-programozásból a Code Hunt
2014-05-19T14:06:04+02:00
2014-05-21T20:53:11+02:00
2022-06-29T07:52:33+02:00
  • Néhol túlbonyolítottnak hittem, emiatt nehéz volt, pedig csak egyszerű dologra kellett volna gondolni. pl.: 1/14
    voltak olyan helyek, ahol lehetett volna egyszerű beépített c#-os függvényt használni, de mivel unchecked számításokat követel meg, így kénytelen voltam mellőzni. Meg olyan is, ahol figyelembe kellett venni, hogy hogy kerekít a C#.
    Az egész tényleg inkább csak matematikai/logikai tréning, egy kis szórakozásnak azért jó.
    Mutasd a teljes hozzászólást!
  • Hmm, úgy néz ki, ez az oldal igazából egy microsoftos technológia, a PEX tech demója. A technológia arra való, hogy dinamikusan input adatokat generáljon a kódodhoz úgy, hogy minden utasítása végre legyen hajtva legalább egyszer, illetve a jelek szerint arra is alkalmas, hogy két kód ekvivalenciáját megállapítsa. (Legenerálja mindkét kódhoz a reprezentatív inputokat, és ha az output egyezik, akkor a kódok ekvivalensek.)

    Ez megmagyarázza, hogy miért nem árul el minden hasznos inputot már az elején - az inputok a kódodtól függően generálódnak, hogy demonstrálják a lehetséges eseteket! Azt is megmagyarázza, miért bánik olyan mostohán a Javával - C#-ra lett tervezve szegényke, a Java kódot gondolom valami alapszintű Java->C# fordítón eresztik át előtte.
    Mutasd a teljes hozzászólást!
  • Latszik, hogy Microsoft csak C#-ul tud.
    Mutasd a teljes hozzászólást!
  • Újfent csak érdekesen értelmezi az eleganciát az oldal.

    Sztring összefűzés ciklusban StringBuilder osztállyal, ahogy a nagy könyvben meg van írva -> Your code worked!

    Sztring összefűzés ciklusban gányolva, += operátorral -> You wrote elegant code!

    No comment...
    Mutasd a teljes hozzászólást!
  • A ternary operator nagyon elegáns az oldal szerint, az már egyszer biztos. Egy ilyesmi kód nála elegánsnak számít:

    return (x>168) ? 10 : (x>42) ? 20 : 30;
    de ugyanez if-else-be szétbontva már csak két pontot ér a háromból...

    Gondolom az eleganciára valami olyan egyszerűsített mérőszámuk van, ami az utasítások darabszámán alapul, és nem veszi figyelembe a kifejezések olvashatóságát és komplexitását.
    Mutasd a teljes hozzászólást!
  • Pl létrehoztam egy karakter tömböt(c) egy stringből és a végén stringet kellett visszaadni. És nem hagyta lefutni a:
    return new String(c);
    parancsot, pedig ez tökéletes megoldás. Egyesével kellett beletennem a karaktereket egy új stringbe és azt visszaadni. Eclipse simán engedte az én megoldásom.
    Mutasd a teljes hozzászólást!
  • Én pont most találtam ilyet a 03.07-nél. Már megvan a megoldás, csak egy char[] tömböt kéne String-ként visszaadni. Ez van a kezdő kódban, és egyébként teljesen érvényes Java kód:

    return new String(c);
    Erre azt mondja a drágaság, hogy idézem:
     Cannot implicitly convert type 'char[]' to 'string' (CS0029)

    Gondoltam akkor, ha már nem ismeri az összes javás String konstruktort, próbáljuk explicitebben:

    return String.valueOf(c);
    Erre meg ilyet szól:
     'CodeHunt.JavaExtras' does not contain a definition for 'ArrayToString' (CS0117)

    Végül ezzel a nyakatekert módszerrel már hajlandó volt lefordítani:

    return new StringBuilder().append(c).toString();
    Szerintem ez elég szánalmas. Ha nem tesztelték ki a Java opciót, legalább feltüntethették volna, hogy csak kísérleti jellegű. Vagy az a cél, hogy bemutassák, mennyire ratyi a Java a C#-hoz képest?
    Mutasd a teljes hozzászólást!
  • pl melyiknél?
    Mutasd a teljes hozzászólást!
  • Jó pofa, de messze nem tökéletes. Javaban nyomom és nem egy dologgal találkoztam találkoztam már, amit el kellett volna fogadni(Eclipseben működött), de hibát írt ki.
    Mutasd a teljes hozzászólást!
  • Hát elég szivatós feladatoknak tűnnek.. Viszont nem sok hasznát látom. De ez csak egy személyes vélemény :)
    Mutasd a teljes hozzászólást!
  • Hehe, a 02.05 pályát meg lehet csinálni ciklus nélkül. Az OEIS a barátod, ha már elég sok elemet ismersz egy számsorozatból

    (Vagy csalásnak számít, ha az ember megkeresi a megoldást, és nem magától találja ki?)
    Mutasd a teljes hozzászólást!
  • Vannak olyan pályák, amikre túl kevés infót adnak, így képtelenség megoldani őket elsőre.

    Nem is szempont, hogy megold elsőre, ez a pontok számát nem befolyásolja egyáltalán. Volt feladat, ahol csak kb. a 10. próbálkozásra sikerült a 3 pontos kódot kitalálnom.
    Mutasd a teljes hozzászólást!
  • Sehol. A jobb oldalt írja, hogy milyen bemenetekre milyen kimeneteket várt volna, de a feladatot ez alapján neked kell kitalálnod.

    Mondjuk szerintem ez nem igazán tisztességes. Elég kevés kimenetet ad alapesetben, és amikor a rájuk illő legjobb számítást kitalálod, hirtelen kiderül, hogy ja, van még három másik eset is, amire az nem illik. Nem lett volna mindegy, ha egyből 8-10 példaadatot megad, és nem kellene extra köröket futni?
    Mutasd a teljes hozzászólást!
  • De hol írja le, hogy milyen feladatot kell megvalósítani?

    pl az elsőnél: return x;
    Mutasd a teljes hozzászólást!
  • A hozzászólás megoldást tartalmaz az 1/13 és 1/14 feladatokhoz, saját felelősségre olvasd el!

    Az s01-ben a 10esen kellett "csalnom kicsit"
    lekértem pár extra inputot és után meglett, a többit sikerült kitalálni.

    SPOILER 01/13 és 01/14

    13. megoldása nálam: x % 3 + 1

    14. megoldása nálam: 10 % x
    Mutasd a teljes hozzászólást!
  • Nekem eddig ez sokkal inkább valami matek-versenyszerűségnek tűnik.

    1-es Sector 13-14 pályáin sokat gyötrődtem, míg egy bonyolult if-es szerkezettel meglett a 14es. Ezután bejutottam a 2-es Sectorba, még mindig azt érzem, hogy ide inkább erős matek kell. Vannak olyan pályák, amikre túl kevés infót adnak, így képtelenség megoldani őket elsőre. (Persze lehet, hogy egy kicsit kitartóbban kellene a fejem törni.)

    Nektek, hogy ment a S01L13-14?
    Mutasd a teljes hozzászólást!
  • A C# nálam is sokkal gyorsabb.
    Mutasd a teljes hozzászólást!
  • Érdekes, Javában nincs baja a "return -x;"-szel...

    szerk: viszont nekem is piszok lassú. Lehet a választott nyelvtől is függ?
    Mutasd a teljes hozzászólást!
  • using System; public class Program { public static int Puzzle(int x) { //return -x; // ettől kiakad return x * -1; // ez meg elegáns... } }
    Mutasd a teljes hozzászólást!
  • Nálam viszonylag gyors, de még nem jöttem rá, hogy mi alapján osztályozzák a kód minőségét.
    Van példa, ahol a linq-s megoldás 2-öt ér, míg egy string műveletes 3-at:

    using System; using System.Linq; public class Program { public static int Puzzle(string s) { //return s.Count(x => x == 'a'); // ez 2 pont return s.Length - s.Replace("a", "").Length; // ez viszont 3 } }
    Mutasd a teljes hozzászólást!
  • Kicsit lassú, de elmókázok vele egy darabig. Kíváncsi vagyok, hogy milyen feladatokat gondoltak ki a vége felére.
    Mutasd a teljes hozzászólást!
abcd