Konkurs na najbardziej poryty kod (edycja I, etap I)

0

Witam
Tak dla rozluźnienia wymyśliłem konkurs na najbardziej poryty kod. Program ma być napisany w C++. Po tygodniu zrobi się ankietę który kod jest najbardziej poryty. Zwycięzca będzie mógł umieścić sobie w stopce informację, że jest autorem najbardziej porytego kodu na 4p :p
Zadania wysłane po czasie, nie kompilujące się, wypisujące błędne dane będą odrzucane. Programy będą kompilowane pod Linuksem poleceniem:
g++ program.cpp
Zadanie dla pierwszej edycji:
Napisz program który pobierze ze standardowego wejścia dwie liczby i na standardowe wejście wypisze ich sumę. Np.
Wejście:

8
2

Wyjście:
10
Powodzenia!

Moja propozycja:

#include<iostream>
typedef int b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2;
b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2 main(){
b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2
f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289;
b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2b0deafe06db140559c5210b2c0d9d4e2
ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607;std::cin>>
f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289;std::cin
>>ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607;std::
cout<<f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289f75398187b5c441797674f5964883289
+ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607ea28698224b544399f3f21cfe9ecf607;}
0

Konkurs w stylu SPOJa inaczej? Podoba mi się ;]

0

Dopiero teraz jest IOCCC?? WHY??
Miałem kod pisany wierszem, ale już go usunąłem

0
#include <stdio.h>

int main()
{
	int mem[0x2];
	if(1, scanf("%d", mem), 1, 2, 3, 1, 2, 3, scanf("%d", &mem[0x001], 1234, 5678, 0x123), 666, mem[0x000] += mem[0x001], 1234, 999, 0xDEAD, 0xBABE, printf("%d", *(int*)mem, 712389), 0) {  }
	return 0;
}

klepanie tego cuda trochę mi zajęło, ale oto mój pierwszy w życiu program bez żadnego średnika (no dobra, z jednym... :/) wykonujący się w instrukcji warunkowej. Chciałem go bardziej skomplikować i w pierwotnych założeniach miał być bez żadnej zmiennej, ale chyba mi nie wyszło.

0
MSM napisał(a)

oto mój pierwszy w życiu program bez żadnego średnika (no dobra, z jednym... :/)

Z dwoma. Za karę napiszesz na compo najbardziej pokręcony program liczący średniki, ok?

Pamiętaj, że w C++ main domyślnie zwraca 0 z definicji, poza tym zmienne można dodać na wiele sposobów, chociażby tak:

if (double long penis = 69.666) {
    /* blok z użyciem zmiennej */
}
0
%:include<iostream>
struct __<%int _;__()<%_=0;%>void ___()<%int _;std::cin>>_,(*this)._+=_;%>%>;int main()<%__ _;_.___(),_.___(),std::cout<<_._;%>
0

Było jeszcze trójznaki preprocesora wykorzystać dla odmiany, mają naprawdę chory wygląd.

0
deus napisał(a)

Było jeszcze trójznaki preprocesora wykorzystać dla odmiany, mają naprawdę chory wygląd.

Pod GCC wymagają parametru -trigraphs, a więc nie skompilują się w zadaniu.

0

Zabawne, CL z m.in. Visuala wspiera trójznaki, domyślnie ma wyłączone alternatywne tokeny - odwrotnie niż GCC.

0
#include <iostream>
using namespace std;

int main()  {
  int bu = 0;
  long haha[(2 - 2) + 2];
  string oo;
  
  while(cin) {
    getline(cin, oo);
    haha[bu++] = atoi(oo.c_str());
  }
  
  long eh = -2147483648, ah, uh;
  x:
  for (ah = eh; ah < 2147483647; ah++) {
    if (ah != haha[0]) {
      eh++;
      goto x;
    } else {
      long oh = -2147483648;
      y:
      for (uh = oh; uh < 2147483647; uh++) {
        if (uh != haha[1]) {
          oh++;
          goto y;
        } else {
          cout << (ah + uh) << endl;
          goto z;
        }
      }
    }
  }
  
  z:
  return 0;
}
0

@Pan kuba:

$ g++ pan\ kuba.cpp
pan kuba.cpp: In function ‘int main()’:
pan kuba.cpp error: ‘atoi’ was not declared in this scope

0

Widocznie wersja gcc, którą posiadam, jest równie poryta co kod :P Kompiluje się bez problemów

D:\programowanie>g++ -dumpversion
3.4.5

Kod z zainkludowanym odpowiednim nagłówkiem, dodałem jeszcze parę poprawek:

#include <iostream>
#include <cstdlib>
using namespace std;

int main()  {
  int bu = 0;
  long haha[(2 - 2) + 2] = {0};
  string oo;
  
  while(cin && bu < 2) {
    getline(cin, oo);
    haha[bu++] = atoi(oo.c_str());
  }
  
  long eh = -2147483647, ah, uh;
  x:
  for (ah = eh; ah < 2147483647; ah++) {
    if (ah != haha[0]) {
      eh++;
      goto x;
    } else {
      long oh = -2147483647;
      y:
      for (uh = oh; uh < 2147483647; uh++) {
        if (uh != haha[1]) {
          oh++;
          goto y;
        } else {
          cout << (ah + uh) << endl;
          goto z;
        }
      }
    }
  }
  
  z:
  return 0;
}
0

Najciekawiej to mi na razie wygląda kod Azriena, porytość składniowa przerasta wszystko inne.

0
#include <iostream>

namespace _$ {

std::ostream& _$ = std::cout;

template < int i >
struct _ {
	struct A {
		int* __;
		A() {
			__ = new int(10);
        }
		~A() {
			delete __;
		}
		A& operator++(int) {
			return *this;
		}
	}*a;
	_(){
		a = new A;
		std::cin >> *a->__;
	}
	~_(){
		delete a;
	}
	A**operator ()() {
		return &a;
	}

	_&operator ++(int) {
		return *this;
	}
	_&operator ++() {
		return *this;
	}
};

}

const int ___ = 0;

#define _____ int main

_____() {<%_$::_$<<((*(&(*(*_$::_<___>()++()))++)->__)+=*(*_$::_<___>()())->__ + (&___)[___^___]);%>}

Stary kod potrzebny do konkursu na najdłuższy ciąg znaków niealfanumerycznych w C++.

Poprawione, ale nie wiem czemu przypisanie mi nie chce zadziałać :/

// EDIT: Poprawione i wykonuje zadanie konkursu :)

0

@winerfresh:

$ ./a.out
Naruszenie ochrony pamięci

0
#include <bardzoprostefunkcje.h>
int main()
{
  pobierzZeStandardowegoWejsciaDwieLiczbyIWypiszIchSume(true,true);
}
0

@martwiak:

$ g++ martwiak.cpp
martwiak.cpp: In function ‘int main()’:
martwiak.cpp error: ‘pobierzZeStandardowegoWejsciaDwieLiczbyIWypiszIchSume’ was not declared in this scope

:P

0

@martwiak:
Ha! Tak naprawdę ta kosmicznie długa nazwa funkcji nie jest dla mnie przestępstwem kryminalnym, jeśli funkcja faktycznie robi dokładnie to, co mówi! (Choć sam chyba jeszcze nie nigdy nie dałem funkcji nazwy na 53 litery...)

O wiele bardziej nie lubię nadawania takim zarządzającym wejściem i wyjściem funkcjom nazw takich jak "suma" lub (o zgrozo!) "sumowanie".

Bez sensu jest natomiast nazwa dołączonego pliku .h.

A w naszej funkcji o uber-długiej nazwie WTF-em są te dwa argumenty typu boolowskiego. Prawdopodobnie to znaczniki/flagi, a takie coś nadaje się już do refaktoryzacji.

0
bswierczynski napisał(a)

Ha! Tak naprawdę ta kosmicznie długa nazwa funkcji nie jest dla mnie przestępstwem kryminalnym, jeśli funkcja faktycznie robi dokładnie to, co mówi! (Choć sam chyba jeszcze nie nigdy nie dałem funkcji nazwy na 53 litery...)

A co powiesz na kilka makrodefinicji z pewnego dużego projektu?

#define RTL_APPEND_PATH_ELEMENT_BUGFIX_CHECK_FIRST_THREE_CHARS_FOR_SLASH_TAKE_FOUND_SLASH_INSTEAD_OF_FIRST_CHAR (0x00000002)
#define RTL_DOS_SEARCH_PATH_FLAG_APPLY_DEFAULT_EXTENSION_WHEN_NOT_RELATIVE_PATH_EVEN_IF_FILE_HAS_EXTENSION (0x00000004)
0

@deus:
No te nie są już kosmiczne. One są... galaktyczne!

Co prawda wolę już dłuższe nazwy z których przynajmniej coś wynika, ale jeśli identyfikator składa się z trzycyfrowej liczby znaków, to po prostu wiesz, że tak czy siak właśnie obsrałeś się na różowo ;).

0
Azarien napisał(a)
%:include<iostream>
struct __<%int _;__()<%_=0;%>void ___()<%int _;std::cin>>_,(*this)._+=_;%>%>;int main()<%__ _;_.___(),_.___(),std::cout<<_._;%>

http://ideone.com/bqiSf

0

wejście: brak
wyjście: 269028978

WTF?

W przypadku błędu zwraca 269028978, jeśli podano tylko jedną liczbę zwraca ją pomnożoną przez dwa.

0
winerfresh napisał(a)

http://ideone.com/cn3uT - nie dziala?

0
Demonical Monk napisał(a)

wejście: brak
wyjście: 269028978

WTF?
Zobacz 2 wynik

0
Qyon napisał(a)
Demonical Monk napisał(a)

wejście: brak
wyjście: 269028978

WTF?
Zobacz 2 wynik

Tak, widziałem. Tylko nie ma obsługi błędów :>

Winterfresha nie wyrzuca wyniku na stdout.

prog.cpp: In function ‘int main()’:
prog.cpp:31: warning: value computed is not used
0

Daje warna, bo on nic nie robi :P tylko w bardzo dziwny sposób mnoży 2 liczby przez siebie. Chciałem dać jeszcze przypisanie, ale z nieznanych mi przyczyn zakomentowane przypisanie nie chce zadziałać (wali ochroną pamięci).

http://ideone.com/7Fm9A

0

Zapomniałem napisać, że należy przyjąć, że wejście jest poprawne.

@winerfresh: Ja warna nie dostaje. Wyniku dodawania też.

0

Już poprawiłem. Wszystko działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1