Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Задачка про питона


Автор: SaDFromSpb 22.1.2010, 15:41
На перловой конференции 2009-го года была представлена следующая задачка:
http://golf.yapcrussia.org/2009/
Вот список победивших решений:
http://jerom.livejournal.com/147166.html
Самое лучшее из них:
Код

#!perl -naF
map{/[h-l]/?do{$y[$n]=o;push@p,$n;$y[$p[$t+=$y[$n+=$$_]!=1]]='-';$y[$n]=x}:do{push@y,$_;$n=$#y
if/x/;$p[1]=$#y if/o/}}@F;$h=-1;$l=1;$k=-($j=@F)}{pop@y;print@y



Вот мое на С++ :

Код

#include <iostream>
#include <deque>
#include <string>
using namespace std;deque<int>b(2);int main(){string s,o;cin>>s;int r=0,h,l=s.size()+1;for(;cin;cin>>s){o+=s+'\n';}b[0]=o.find('x');b[1]=o.find('o');for(;r<s.size();++r){h=b[0];
#define I if(s[r]==
I'k')h-=l;I'j')h+=l;I'h')--h;I'l')++h;b.push_front(h);if (o[h]=='-'){o[b.back()]='-';b.pop_back();}o[h]='x';o[b[1]]='o';}for(l=r+1,r=0;r<o.size()-l;cout<<o[r++]);}



Ну или его развернутый вариант:
Код

#include <iostream>
#include <deque>
#include <string>
using namespace std;
deque<int> b(2);
int main() 
{
  string s,o;
  cin>>s;
  int r=0,h,l=s.size()+1;
  for(;cin;cin>>s){o+=s+'\n';}
  b[0]=o.find('x');
  b[1]=o.find('o');
  for(;r<s.size();++r){
    h=b[0];
#define I if(s[r]==
    I'k')h-=l;
    I'j')h+=l;
    I'h')--h;
    I'l')++h;
    b.push_front(h);
    if (o[h]=='-'){
      o[b.back()]='-';
      b.pop_back();
    }
    o[h]='x';
    o[b[1]]='o';
  }
  for(l=r,r=0;r<o.size()-l-1;cout<<o[r++]);
}


Может у кого-нибудь получится еще короче? =)

Автор: Alek86 22.1.2010, 16:21
Код
if (

поменять на
Код
if(

Автор: zim22 22.1.2010, 20:31
Цитата(SaDFromSpb @  22.1.2010,  14:41 Найти цитируемый пост)
Самое лучшее из них:

нечитаемый бред

Автор: GoldFinch 22.1.2010, 20:41
zim22, есть вещи которые кодятся ради красивого решения, а не ради самого решения

Автор: SaDFromSpb 22.1.2010, 21:49
Alek86, Ха!... Точно! =)))


Цитата(zim22 @  22.1.2010,  20:31 Найти цитируемый пост)
нечитаемый бред 

Что поделать... Максимальная краткость в данном случае главный критерий...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)