Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

C++ kortast möjliga funktion

Skapad av Peter_den_bra, 2011-05-15 19:06 i Webbutveckling & Programmering

1 466
9 inlägg
0 poäng
Peter_den_bra
Visningsbild
Hjälte 121 inlägg
0
Eftersom programmering är så roligt tänkte jag att vi skulle på kortast möjliga sätt skriva en funktion som omvänder en textsträng så att "hejsan!" ger "!nasjeh".
Funktionens deklaration ser ut såhär:
Ett stycke php-kod:
std::string reverse(const std::string& str);

Nu är det din tur att skriva definitionen av reverse genom att använda så få tecken som möjligt. Koden ska kunna kompileras och vara standard C++ (C++0x går bra). Du behöver inte ha med några #include's. Radbryt räknas som ett tecken. Alla sätt är tillåtna så länge reglerna ovan följs. Sätt igång!

Var inte rädd för att posta även om du tror att det inte är det kortaste som går. Vi kan successivt göra den kortare.

Det är inte fel att ha fel.

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Neant
Visningsbild
Hjälte 766 inlägg
0
Svar till Peter_den_bra [Gå till post]:

Jag fuskar lite.

Ett stycke javascript-kod:

void reverse(char* str)
{
if(*str != '\0')
reverse(str+1);
cout << *str;
}


giatod
Visningsbild
P 34 Ljungsbro Hjälte 267 inlägg
0
Då hugger jag till med det här du har inte get några krav som sägger att den ska spåtta utt något annat om den inte får hejsan!
std::string reverse(std::string str){return"!nasjeh";}

Ingen status

skateboy39
Visningsbild
Hjälte 110 inlägg
0
string str = "hejsan!"; reverse(str.begin(), str.end());
Peter_den_bra
Visningsbild
Hjälte 121 inlägg
Trådskapare
0

Svar till Neant [Gå till post]:
nej, fusk är inte tillåtet ;)


Svar till giatod [Gå till post]:
Bra och kompakt (54 tecken)! men det var inte så jag tänkte så det räknas inte. Och förresten så skulle funktionen ta en const std::string& som argument.


Svar till skateboy39 [Gå till post]:
Det där är ju inte ens en funktion.


Notera att all tecken räknas, även space.
Man ska alltså kunna deklarera funktionen såhär
Ett stycke php-kod:
std::string reverse(const std::string& str);

i koden före och senare ge definitionen av funktionen som är det som är uppgiften här.

Det är inte fel att ha fel.

Neant
Visningsbild
Hjälte 766 inlägg
0
Svar till Peter_den_bra [Gå till post]:

Ett stycke php-kod:

std::string reverse(const std::string& str){int i=str.size();string a;for(;i;i--){a+=str[i-1];}return a;}


Kortaste jag kommer på sådär på rak arm - borde kanske gå att minska en smula.

Edit: Kortade ned några tecken genom att optimera for-loopen.
Edit2: Och tar bort måsvingar i forloopen

Ett stycke php-kod:

std::string reverse(const std::string& str){int i=str.size();string a;for(;i;){a+=str[--i];}return a;}


Ett stycke php-kod:

std::string reverse(const std::string& str){int i=str.size();string a;for(;i;)a+=str[--i];return a;}


Edit 3: alltså, rent tekniskt ska det kanske in ett std:: till i min kod, eller tas bort två. Dvs:

http://pastebin.com/99THbxfB


Peter_den_bra
Visningsbild
Hjälte 121 inlägg
Trådskapare
0

Svar till Neant [Gå till post]:
ja det ska det ska vara std:: om du inte lägger till using namespace std; före men det blir bara längre då. Så kortast hitils är alltså
Ett stycke php-kod:
std::string reverse(const std::string&str;){int i=str.size();std::string a;for(;i;)a+=str[--i];return a;}
med 104 tecken.

Det är inte fel att ha fel.

Nattefrost
Visningsbild
P 34 Trollhättan Hjälte 5 035 inlägg
0

Svar till Peter_den_bra [Gå till post]:
Eftersom jag är ingen höjdare på C++ riktigt så bidrar jag med en bit python-kod...:
Ett stycke php-kod:
def reverse(s):
return s[::-1]


En bit java-kod..:
Ett stycke C#-kod:

public static void main(String[] args) {
System.out.println(ReverseString.reverseIt(args[0]));
}


Sen orkade jag inte mer, men det skulle vara roligare med någon vettig "tävling" :)

Guess I'm just another jerk in your social network

Peter_den_bra
Visningsbild
Hjälte 121 inlägg
Trådskapare
0
Okej, nu postar jag den kortaste reverse funktionen som jag kunnat komma på.

82 tecken:
Ett stycke php-kod:
std::string reverse(const std::string&s){return std::string(s.rbegin(),s.rend());}


Använder vi de nya grejerna c++0x så kan vi få ner den till 70 tecken:
Ett stycke php-kod:
std::string reverse(const std::string&s){return{s.rbegin(),s.rend()};}

Det är inte fel att ha fel.


Forum » Datorer & IT » Webbutveckling & Programmering » C++ kortast möjliga funktion

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons