войти зарегистрироваться

Блог компании REG.RUДень 2^8

Дорогие программисты Хабра! Мы от всей души поздравляем вас с профессиональным
праздником! Специально по такому случаю наши программисты приготовили вам небольшое
поздравление:

#!/usr/bin/perl
undef$/;$s=<DATA>;
foreach (split//,$s) {$b.=$_ eq'D'||0if/[OD]/;print pack("b8", $b)and$b=''if length$b>=8;}
__DATA__
                                            RROORR                              
                                          ORRDORRRRODRRRR                       
                                       ODRRRRROOOORDRDRRROOROROR                
                     .......         RRRODDDRRORRRROOORRRRRODDDORRDROO          
              ...............      RRDDRDDROROOOOODROROORRRRROOODRRRRRRDDR      
         ....................    RORRORDRORRRODDDRORDRRRRDDRRRRDORRRRRDDODDD    
       ........................RRROORDDORRORDRORODRRRRDRRDRODORORROODDRRO       
       .....................RDODDODDORRDODDRRRRRRRRORRRDDORDRORDORRORDRRR       
       ...................RRRDRORRODRRROODRRRRRDDORRRRRRDDRRRRRRROODRDRDO       
       .................ROOORORODRROROORRRORRDRROORRRDRRRDRRRRORDRRORRROO       
     ................ODRRRRRDRORRDRRROODDDDORODRDDRRRRRODORRRRORRRROOORO        
     ..............RRRODRRRRRROOORDRRRROOOODRRRRODODRROORDRRDRORRDDORRRR        
     ............ORRDDRRRRRDROROORDODRRDDOOOROORORDRORROORDORRRRRRORDDRD        
     ..........RODORDRRORRODDRORRRDRDDORRRRODDODOORROORRDDOORRRRRDRRRORR        
     .........ODRDRRDROORRRRRORRDOORRRRDRDORRDDOODDDOOORORORRRRRODORROOR        
     .............RDRDRORRRORDRDRORRRODRROORDRRRDRDRRODDDRRDORRRDDORDOR         
     .............DDORRDRDOORROROOODROORRRRODRRRORORDRRODRODORDRRRORORR         
     .............RRRODORDRRRRRRDRDROORRRRORDRRROORDRDRDRRODRORRRRORODO         
      ...........RRORDRRORRRDRRORDODORRDRODRROODDDRRODROORROOOOORRDRRRR         
      ...........RRORRORDDOORDRORDRRRRRRROOORRRORRODDDRRRRRR    RORDROR         
      ...........DOODRRRRRDORDDOOORDRDODRRORRRRODRRORD          RRDROR          
      ...........RRRRRDRORRRORRROODDROORORDRDRORRDRDO           OORROR          
      ..........OODROORRDRRDRRRDRRORORRDDRORRODOODDDO           DRRORD          
      ..........ORRODRRRRRDORRRDRORDRORODDOORRRORDRR            ODRRDR          
      ..........RDORRRDORORRDODDRRORRRRRODRRRDDRRRRR           RODDRO           
      ..........DDRDORRRRORDRDRORROROOORORDRRORRRRRR           ORRROR           
       ........DRRRRDROORRDRRDODDRDRRRRRRDORRRDRDOOR           RDRORR           
       ........RRORDDRDOORORROORRODRROROROOORDRORRD            DRRRRR           
       ........RORDOOROODDRORRRRODRRRRORRRROODDORRO           RDORRR            
       ........ORRRRDDDRRORRRRDRROOORRODRRDRROROOOR           RRRRDO            
       ........DRRRDRRRODRRRRORROORRRRRRORDDRROODOR           OORRRR            
       .......RRRRDDRROORRRDRRORRODRRDRRRRDRORORRO           RRRRRR             
       .......RRROORRRORRDORORDRODODRDRDRRRORDRRRR                              
       .......DRORRORDRRDRDRORRRDODRRRRRRORRODDOOR                              
        ......RRDRORRRRODDRRDORDDROORDDRRDRRROODRR                              
        ......RRRORRDOORORRRORRRRRRRRRRRRRRRR                                   
        .....RRRRRRRRRRRRRRRRRRRRRRRRRR                                         
        .....RRRRRRRRRRRRRRRRRRRR                                               
        .....RRRRRRRRRRRRRR                                                     
         ...RRRRRRRRR                                                           
          ..RRRR

ПрограммированиеПраздничный биатлон

Programmers&#39; dayС днем программиста, коллеги!

Предлагаю в честь праздника поразмять мозги и поучаствовать в биатлоне.
Виды спорта: алгоритмы, SQL. Для каждого из них будет две задачки: попроще и посложнее.
В качестве награды за усилия всем участникам гарантируется улучшение кровообращения в левом полушарии головного мозга (:

Алгоритмы. Задача №1, разминочная


Напишите код, который находит количество подчисел числа n, на которые это число делится без остатка.

Для числа n, подчисло — это такое число, запись которого является подстрокой записи числа n. К примеру, если n равняется 1938, то его подчислами будут являться: 1, 9, 3, 8, 19, 93, 38, 193 и 938. Без остатка 1938 делится на четыре из этих подчисел: 1, 3, 19 и 38. Соответственно, результатом работы программы должно быть число 4.
Если подчисла повторяются, каждое из них считается. Например, 101 делится без остатка на 1, 1 и 01, значит, ответ — 3.

Так как задача несложная, в решениях ценится краткость или нестандартный подход.

Занимательные задачки Задача о голубоглазых островитянах

Замечательная задачка, которой я посвятил немало часов размышлений и теперь публикую ее на хабре, дабы вы тоже смогли поразмять мозги.


.NETC#: Этюды, часть 7

Сегодня простой этюд, почти без кода.

Допустим, есть некий класс и его статический конструктор:
static C()
{ Console.WriteLine("from static ctor"); }

Как известно, статические конструкторы вызываются до первого использования типа. Других ограничений нет, поэтому время его вызова вы не можете контролировать (он может вызваться как в самом начале программы, так и при первом обращении). В частности, если два класса используют друг друга в статических конструкторах, поряд вызова этих конструкторов не определен.

В общем, все очень сложно. Тем не менее, напишите код, который гарантированно вызывает указанный выше статический конструктор как раз в нужном месте.

Console.WriteLine("before static ctor");
// нужно вызвать здесь
Console.WriteLine("after static ctor");

.NETЗадачка по C#

При каких условиях пройдет данный тест?

    [Fact]
    public void NewTest()
    {
      var a = new A();

      a.GetType().GetField("b").SetValue(a, 83);
      a.GetType().GetField("c").SetValue(a, 42);

      Assert.Equal(a.b, a.c);
    }

upd: в комментариях написали уже 5 верных решений, если интересно оценить свои знания и фантазию — не заглядывайте туда преждевременно

JAVAЗадача по Java Core

В продолжение к хорошей задаче, опубликованной не так давно на хабре, хотелось бы предложить ещё одну задачу.
Смысл, конечно, именно в решении задачи в голове, не используя спец. редакторы и компилятор.

Дан код на Java:
public class HelloWorld {
  public static void main(String... args) {
    http://habrahabr.ru;
    System.out.println("Hello World!");
  }
}


Вопрос: скомпилируется или нет?

Human ResourcesЗадачи с доминошками на собеседованиях из песочницы

По личному опыту, могу сказать, что довольно популярными на собеседованиях являются задачи, так или иначе связанные с покрытиями доминошками каких-либо поверхностей. Условия могут варьироваться, но суть у всех остается одна.

Пример 1

Имеется шахматная доска 8 на 8 клеток, левый нижний и правый верхний углы которой отрезаны.
image
Можно ли полностью покрыть такую доску доминошками размера 2×1 клетку?

JAVAПятничная задача

Всех с пятницой!

Проверяем знания и своё внимание. Дан код на Java:

  1. public class Foo {
  2.  private static Foo instance = new Foo();
  3.  private static final int DELTA = 6;
  4.  private static int BASE = 7;
  5.  private int x;
  6.  private Foo() {
  7.   x = BASE + DELTA;
  8.  }
  9.  public static void main(String... argv) {
  10.   System.out.println(Foo.instance.x);
  11.  }
  12. }


Внимание вопрос! Что будет выведено? А главное — почему?

UPD Осторожно — в комментариях уже присутствует правильный ответ. Прошу провести тест в других ЯП и привести результаты в комментариях.

Ненормальное программированиеВсе решения к задачке к Дню Программиста


Я решил объединить все отправленные решения к задаче «С Днем Программиста» в одном топике. При появлении новых решений топик будет обновляться. За понравившиеся решения предлагаю кормить плюсиками авторов, а хабрачитателей награждать инвайтами.
Код на картинке, кстати, тоже решает эту задачу :)

Занимательные задачки Пройти лабиринт

Клеточный лабиринт — это прямоугольник из квадратных комнат, между некоторыми из них есть перегородки.
НЛО забросило Вас в клеточный лабиринт MxN (M и N известны), без входов и выходов. В одной из комнат лежит приз.
У Вас есть сколь угодно много времени и памяти. Ваша цель — добраться до приза. Гарантируется, что это сделать можно.
Что Вы будете делать?
UPD: мои извинения, варианты, предложенные Tails и Brotherofken указали, что я ошибся при переформулировке.
Канонически нужно было составить программу для робота, который умеет только ходить — вперед, назад, вправо, влево. Условия он проверять не умеет, то, что уперся в стену — не замечает, что взял приз — тоже. Нужно составить программу (конечной длины), действуя по которой он гарантированно побывает в клетке с призом и остановится.