Блог пользователя KADR

Автор KADR, 18 месяцев назад, По-русски
На топкодере регулярно проходит shortest code competition по задачам срмов (обычно простым). Иногда довольно интересно посмотреть, как можно сжать код, казалось бы простой задачи, до совершенно непонятного, но в то же время работающего. Предлагаю проводить такие соревнования и здесь, на Codeforces.

Я начну с задачи C из Codeforces Beta Round #24. Правила простые: каждый следующий код должен быть короче предыдущего. Побеждает тот, кого никто не смог перебить. Длина кода - количество символов в нем, не считая пустых (пробелов, табов, переводов строки и т.д.). Само собой, код должен быть АС хотя бы на одном из доступных компиляторов. Насколько я знаю, на топкодере дефайны в С++ не используют в таких соревнованиях, поэтому предлагаю и здесь их не использовать.

Учитывая возможности некоторых языков, предлагаю проводить отдельный зачет по разным языкам, т.к. вряд ли C++ или Pascal смогут соревноваться с Haskell или Python.

214:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d;
int main()
{
std::cin>>n>>k>>x>>y;
for(k%=2*n;d<n;d++) std::cin>>a[d]>>b[d],d<k?x=2*a[d]-x,y=2*b[d]-y:0;
for (d=0,k-=n;k>0;--k,++d) x=2*a[d]-x,y=2*b[d]-y;
std::cout<<x<<" "<<y;
}
 
 
 
 

 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
a[' '] - это отжиг. Пробельный символ не считается, но без него код не работает :). Кстати, почему там три пробела?
  •  
    18 месяцев назад, # ^ | Ответить
      Проголосовать: нравится +1 Проголосовать: не нравится
    '   ' - это число в системе счисления по основанию 256. Оно равно  32*256*256+32*256+32=2105376.
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
Пока просто бездумно.
206:
#include
<iostream>
__int64 n
,k,x,y,a['   '],b['   '],d,i;
int main()
{
std
::cin>>n>>k>>x>>y;
for(k%=2*n;std::cin>>a[d]>>b[d];d++) d<k?x=2*a[d]-x,y=2*b[d]-y:0;
for (k-=n;k>0;--k) x=2*a[i]-x,y=2*b[i++]-y;
std
::cout<<x<<" "<<y;
}
  •  
    18 месяцев назад, # ^ | Ответить
      Проголосовать: нравится 0 Проголосовать: не нравится
    #include <iostream>
    203:
    __int64 n,k,x,y,a['   '],b['   '],d,i;
    main()
    {
    std::cin>>n>>k>>x>>y;
    for(k%=2*n;std::cin>>a[d]>>b[d];d++) d<k?x=2*a[d]-x,y=2*b[d]-y:0;
    for (k-=n;k>0;--k) x=2*a[i]-x,y=2*b[i++]-y;
    std::cout<<x<<" "<<y;
    }

    P.S.: как сделать подсветку кода в комментариях?
    •  
      18 месяцев назад, # ^ | Ответить
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ой, случайно 203 не туда вставил. Вот:

      #include <iostream>
      __int64 n,k,x,y,a['   '],b['   '],d,i;
      main()
      {
      std::cin>>n>>k>>x>>y;
      for(k%=2*n;std::cin>>a[d]>>b[d];d++) d<k?x=2*a[d]-x,y=2*b[d]-y:0;
      for (k-=n;k>0;--k) x=2*a[i]-x,y=2*b[i++]-y;
      std::cout<<x<<" "<<y;
      }
    •  
      18 месяцев назад, # ^ | Ответить
        Проголосовать: нравится 0 Проголосовать: не нравится
      Не знаю, оно само.
    •  
      18 месяцев назад, # ^ | Ответить
        Проголосовать: нравится 0 Проголосовать: не нравится
      Похоже, что это "стараются" среды разработки(ещё  на это указывает :). По-моему, достаточно monospace шрифта.
      А ещё в Notepad++ есть NppExport>Export to HTML.
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
198:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d,i;
main()
{
    std::cin>>n>>k>>x>>y;
    for(k%=2*n;std::cin>>a[d]>>b[d];d++) d<k?x=2*a[d]-x,y=2*b[d]-y:0;
    while (i<k-n) x=2*a[i]-x,y=2*b[i++]-y;
    std::cout<<x<<" "<<y;
}
П.С. видимо, лучше отвечать на исходное сообщение, иначе все рискует безумно поехать
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
197:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d,i;
main()
{
    std::cin>>n>>k>>x>>y;
    for(k%=2*n;std::cin>>a[d]>>b[d];d++) d<k?x=2*a[d]-x,y=2*b[d]-y:0;
    for(;i<k-n;x=2*a[i++]-x)y=2*b[i]-y;
    std::cout<<x<<" "<<y;
}
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
164:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d,i;
main()
{
    std::cin>>n>>k>>x>>y;
    for(k%=2*n;d<k;d++) std::cin>>a[d]>>b[d],x=2*a[d%n]-x,y=2*b[d%n]-y;
    std::cout<<x<<" "<<y;
}
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
163:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d,i;
main()
{
    for(std::cin>>n>>k>>x>>y;d<k%(2*n);d++) std::cin>>a[d]>>b[d],x=2*a[d%n]-x,y=2*b[d%n]-y;
    std::cout<<x<<" "<<y;
}
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
160:
#include <iostream>
__int64 n,k,x,y,a['   '],b['   '],d;
main()
{
    for(std::cin>>n>>k>>x>>y;d<k%(2*n);) std::cin>>a[d]>>b[d],x=2*a[d%n]-x,y=2*b[d++%n]-y;
    std::cout<<x<<" "<<y;
}
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
157:
Snippet
#import <iostream>
__int64 n,k,x,y,b['   '],d;
main()
{
    for(std::cin>>n>>k>>x>>y;d<k%(2*n);) std::cin>>b[d+n]>>b[d],x=2*b[d%n+n]-x,y=2*b[d++%n]-y;
    std::cout<<x<<" "<<y;
}
  •  
    18 месяцев назад, # ^ | Ответить
      Проголосовать: нравится 0 Проголосовать: не нравится
    хм, фиг знает откуда там какой-то Snippet взялся, его надо убрать ))
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится

156

#include <iostream>
main() {
    __int64 n,k,a['   '],d;
     for(std::cin>>n>>k>>*a>>a[1],n*=2;d<k%n*2;) std::cin>>a[2+d],a[d%2]=2*a[2+d%n]-a[d++%2];
     std::cout<<*a<<" "<<a[1];
}

  •  
    18 месяцев назад, # ^ | Ответить
      Проголосовать: нравится 0 Проголосовать: не нравится

    О, есть еще чит с import оказывается

    155
    #import <iostream>
    main() {
        __int64 n,k,a['   '],d;
         for(std::cin>>n>>k>>*a>>a[1],n*=2;d<k%n*2;) std::cin>>a[2+d],a[d%2]=2*a[2+d%n]-a[d++%2];
         std::cout<<*a<<" "<<a[1];
    }

    •  
      18 месяцев назад, # ^ | Ответить
        Проголосовать: нравится 0 Проголосовать: не нравится

      151
      #import <iostream>
      main() {
          __int64 n,k,a['   '],d;
           for(std::cin>>n>>k,n*=2;d<2+k%n*2;) std::cin>>a[d],a[d%2]=2*a[d>n+1?d-n:d]-a[d++%2];
           std::cout<<*a<<" "<<a[1];
      }

      •  
        18 месяцев назад, # ^ | Ответить
          Проголосовать: нравится 0 Проголосовать: не нравится
        150
        #import <iostream>
        main() {
            __int64 n,k,a['   '],d;
             for(std::cin>>n>>k,n*=2;d<2+k%n*2;a[d%2]=2*a[d>n+1?d-n:d]-a[d++%2]) std::cin>>a[d];
             std::cout<<*a<<" "<<a[1];
        }

        :)
 
18 месяцев назад, # | Ответить
  Проголосовать: нравится 0 Проголосовать: не нравится
149:
#import <iostream> 
main() { 
    __int64 n,k,a['   '],d; 
     for(std::cin>>n>>k,n*=2;d/2<=k%n;a[d%2]=2*a[d>n+1?d-n:d]-a[d++%2]) std::cin>>a[d]; 
std::cout<<*a<<" "<<a[1]; 
}