C# "Reverse bits" feladat, online, Mono-val miért nem működik, ami VS . NET Core 3. 0 alatt jónak tűnik?
Az uint bináris alakját kellene megfordítani, majd visszaadni az újdonsült uint-et.
A gyakorló oldalon megkapott teszt bemenettel a VS alatt működik, az online felület viszont azt írja nekem, hibás bemenet.
Kérlek, ne bántsatok túlságosan!! :)
https://pastebin (pont) com/sVNnXGKa
Ezt írja az online felület:
Input 00000010100101000001111010011100
Output 15065253 (00000000111001011110000010100101)
Expected 964176192 (00111001011110000010100101000000)
VS-ben megetetem vele ezt az inputot:
string bitUnumber = "00000010100101000001111010011100"; //Convert.ToString(n, 2);
Láss csodát, az output:
964176192
Magát a reverse-t megcsináltam manuálisan is és úgy sem fogadta el.
Mit nézek be nagyon-nagyon csúnyán?
#1-hez kapcsolódva: Az mindenesetre jól látható, hogy az online felület egyszerűen a felvezető nullák nélkül fordította meg a számot. Innentől viszont nem értem, hogy mit csinálsz. Az elején azt állítod, hogy VS-ben működik a függvény, aztán később mégsem azt mutatod be, hanem, hogy a stringgé konvertált szám helyett egy saját stringgel „eteted meg”, aminek az elején ott vannak a helyes megfordításhoz szükséges '0' karakterek. Lehet, hogy az online felületen nem tudod megcsinálni ezt a sportszerűtlen trükköt, de tanúsíthatom, hogy egyébként Monóval lefordítva is ugyanazt az eredményt adja. Erős a gyanúm, hogy ez visszafelé is érvényes, tehát a számértékből konvertált string VS-ben sem fogja tartalmazni a kezdő nullákat, vagyis a különbség nem a fordítók miatt van, hanem egyszerűen abból adódik, hogy nem ugyanazt csináltad a két bemutatott esetben.
A megoldás mondjuk az lehet, hogy a bitUnumber string elejére visszacsempészed az elveszett nullákat. Ahhoz most túl álmos vagyok, hogy erre általános érvényű, tisztességes kódot írjak, de ebben a speciális esetben ugyebár tudjuk, hogy hat nulla hiányzik, így a függvény első sorát a következőképpen megváltoztatva:
string bitUnumber = "000000" + Convert.ToString(n, 2);
...mit tesz Isten, pont a kívánt eredményt szolgáltatja. Természetesen a valódi megoldás nem hat kezdőnullát kíván, hanem a tetszés szerinti inputhoz igazodó számút.
Hol vannak felvezető nullák???
Ez már a string: Input 00000010100101000001111010011100
Legalábbis az online felület is nyersen ezt fordította meg.
Miért sportszerűtlenség egy teszt? :D
Ezen csak röhögni tudok. Kipróbálom valahogy, működik-e, igen, nem értem, online akkor hol a hiba és erre sportszerűtlen vagyok, ok :D
Egyébként ha élőben is ilyenek az emberek ebben a szakmában, mint ezen az oldalon, akkor lehet jobb lenne, ha feladnám az egészet a f.ba.
Én alapból érzékeny vagyok, de itt konkrétan nem olvasni normális hangnemű válaszokat, kvázi egyik kérdés alatt SE.
Azért van, mert nem hisszük el amit írsz.
Nem logikus, hogy a mono odatenné a padding 0-kat. Ha egy számot akár 10-es akár 2-es számrendeszerben alakítunk szöveggé soha nem lesznek ott a padding 0-k.
Ez elvileg mono, láthatod:
tabaki:
Ajánlom figyelmedbe a string osztály PadLeft metódusát:
Convert.ToString(n, 2).PadLeft(32, '0')
Az, hogy ti úgy születtetek, hogy tudtok programozni, nem jelenti azt, hogy más is.
Hol van padding 0?
Na látod... Pontosan ez a kérdés.
Mert elég valószínűtlen, hogy a két fordító ilyen alapvető működésben eltérne.
Egy kezdő sokszor nem tudja, mire vannak gyári metódusok, azok mikor jók, mikor kevésbé.
Főleg nem tudom, mi a .NET Core, Framework közti különbség, mi a Mono.
De itt nem is fogok infót szerezni ezek szerint.
Mi válaszolunk a kérdésekre, de ne csodálkozz, hogy azt írjuk hogy valótlant állítasz amikor azt teszed.
"Ez már a string: Input 00000010100101000001111010011100"
Hogy lenne már ez a string input. Az általad linkelt PasteBin kódban a függvény paramétere egy uint. Gondolom azt hívja meg az online oldal... csak mellékesen ő kiírja a fenti szöveget is a padding 0-kal együtt.
Hogy nézne már ki, ha egy keretrendszer minden szám=>szöveg alakításkor (tehát amikor kiírod a képernyőre, nyomtatod, stb) kirakná a 0-kat.... na és hány darabot, attól függően, hogy hány bizes a szám amit átalakít?
Akkor az lenne itt az oldalon, hogy "A válaszíró 0000000062%-ban hasznos válaszokat ad". Feltéve ha a kerekített % egy 32 bites egész változóban van tárolva.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!