Co jest grane? Robię zadanie BFNTEST. W przykładowe kody wklejam różne komentarze, np kod wejściowy wygląda tak:
#define R(p) rand()%('9'-(p)+1)+(p) // makropolecenie
#define P(p) putc((p),stdout)
#define PP(p) P(R(p)) // makropolecenia zagnieżdżone
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
/* funkcja generująca ciąg cyfr */
void gen(int x)
{
if (x) PP('1'); else PP('0');
for(;x;x--) PP('0');
}
int main/*123456789*/()
{
int a, d, n;/* */
c/*ggg*/in >> a;/*hhhh*/ srand(a); /* inicjalizacja generatora
liczb pseudolosowych /* */
cin >> d; cin >> n; cout << n << endl;
for/*/*uuuu // */(;n;n--)/*/* */ /*/* */
{
gen(rand()%d); P(' ');
gen(rand()%d); P('\n');
}
return 0;
}
U mnie wszystko działa ok, ale ja wyśle to ANI JEDEN test nie przechodzi. Czy jest możliwość abym dostał jakieś dane testowe najbardziej popieprzone abym mógł sprawdzić u siebie, bo ja już nie wiem co mam dalej robić?
Może kilka podam...
printf("Tekst 1 /* Tekst 2 */ Tekst 3\n");
Powinno wypisać całość. Nie powinno natomiast wypisać tego:
/*/ Hello world! /*/
Warto też zwrócić uwagę:
Coś
/* Linia 1
Linia 2
Linia 3
Linia 4
*/
Drugie coś
Nie powinno wyrzucać pomiędzy "Coś" a "Drugie coś" czterech-pięciu wolnych linii.
I jeszcze pewnie wiele innych pułapek...
@giero: A próbowałeś coś takiego skompilować?
No to testy ode mnie (może trafię w Twój błąd):
printf("");
printf("// ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/ //alka
/* / ala/ // */
/ala*/
/ala*/* ala *./ */
// komentarz
// komentarz2 \
dalszy komentarzyk
perl/*/*/*///*//*//*//**//*//*//*//
/*/* /* ///*//*//*//**//*//*//*//*/
komentarz // czy nie komentarz
*//.*/.**./
Output:
printf("");
printf("// ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/
/ala*/
/ala*
perl*
komentarz
*
Nie jestem jednak pewien, co do liczby wypisywanych enterów, więc może ktoś z 12/12 (albo ponad 5/12) odpowie, ile powinno być enterów i kiedy.
Ma ktoś jeszcze pomysł na inne testy?
Mój program uwzględnia:
-zwykłe komentarze /* */ i //
-komentarze ze wskaźnikami /**/*
-printfa
-couta
-putsa
-getsa
-takiego typu komentarze:
// komentarz \
dalszy komentarz
-komentarze z enterami; np. dla
/*
*/
wypisuje mi jedną pustą linię.
Nawet najdziwniejsze pomysły mile widziane, bo moje już się wyczerpały.
Nie przechodzi mi testów: 3, 4 i 9 (mam 9/12pkt).
Trochę zagmatwałeś ten program zobacz jeszcze takie test
In:
#include <stdio.h>
/*fddddddd*/
int main(void)
{
int a=0;//ddddd
printf("/*csc*/");
printf("\\ \" %d",/*fdf*/a);
putchar('\'');
putchar('\"');
return 0;
}
Out:
#include <stdio.h>
int main(void)
{
int a=0;
printf("/*csc*/");
printf("\\ \" %d",a);
putchar('\'');
putchar('\"');
return 0;
}
Myślę, że źle podchodzisz do znaków ( ' i " ). Jeśli chcesz to mogę dać ci mój AC do testów.
pozdr.
Nic nie knocisz, sed nie jest dostępny na SPOJu8 (póki co ).
Nie napisałem, żebyś usuwał spacje, ale żebyś właśnie nie usuwał żadnych dodatkowych. No ale może źle się wyraziłem.
Mój program dla powyższego testu wypisuje pustą linię, bo komentarze widocznie jakoś ją zostawiają. Nie dostaję jednak maxa, tylko 9/12, ale kiedyś też nie wypisywałem nic i miałem sporo mniej punktów. Tak więc spróbuj dostosować się do tego testu, a byś może zostaniesz zaskoczony.
No to sporo masz roboty, nie obijasz się a w HSPL nie bierzesz udziału? Powalcz tak na wszystkie fronty
To ja na przyszłość (bo nie jest to coś bardzo pilnego) też byłbym wdzięczny za jakieś jeszcze testy, póki co mam tam 7/12, ale może z dodatkowymi wskazówkami dałoby radę na max, bo tak ładnie wygląda statystyka z zaliczonymi zadaniami danego typu na maksimum punktów