воскресенье, 15 апреля 2012 г.

Qualification Round 2012. Problem A. Speaking in Tongues

Первый раз немножко поучаствовал в Google Code Jam. К сожаленью плотный график из разных дел не разрешил весь уикенд потратить на решение головоломок от гугла, но очень понравилось. Вот так решил первую задачку:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class Main {

 public static void main(String[] args) throws Exception {

  TreeMap<Character, Character> map = getMap();

  File inputFile = new File("A-small-attempt0.in");
  FileInputStream fileInputStream = new FileInputStream(inputFile);
  BufferedReader reader = new BufferedReader(new InputStreamReader(fileInputStream));

  File outputFile = new File("out.txt");
  FileOutputStream fileOutputStream = new FileOutputStream(outputFile);
  BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fileOutputStream));

  Integer t = Integer.valueOf(reader.readLine());

  String line = null;
  for (int i = 1; (line = reader.readLine()) != null && i <= t && i <= 30; i++) {
   if (i != 1) {
    writer.newLine();
   }

   writer.write("Case #" + i + ": ");

   for (int j = 0; j < line.length() && j <= 100; j++) {
    Character c = line.charAt(j);
    writer.write(map.get(c));
   }
  }

  reader.close();
  writer.close();
 }

 private static TreeMap<Character, Character> getMap() {
  TreeMap<Character, Character> map = new TreeMap<Character, Character>();
  map.put('a', 'y');
  map.put('o', 'e');
  map.put('z', 'q');
  map.put('q', 'z');

  String i = "ejp mysljylc kd kxveddknmc re jsicpdrysirbcpc ypc rtcsra dkh wyfrepkym veddknkmkrkcdde kr kd eoya kw aej tysr re ujdr lkgc jv";
  String o = "our language is impossible to understandthere are twenty six factorial possibilitiesso it is okay if you want to just give up";

  for (int n = 0; n < i.length(); n++) {
   map.put(i.charAt(n), o.charAt(n));
  }

  return map;
 }

 @SuppressWarnings("unused")
 private static void printMap(Map<Character, Character> map) {
  Iterator<Entry<Character, Character>> iterator = map.entrySet().iterator();
  int i = 0;
  while (iterator.hasNext()) {
   Entry<Character, Character> entry = iterator.next();
   System.out.println(++i + ". " + entry.getKey() + " -> " + entry.getValue());
  }
 }
}

надеюсь, они меня возьмут на работу :D

суббота, 12 ноября 2011 г.

Baltic IT Solutions OÜ (bits.ee)

E-commerce solutions built with CS-Cart: Nodi.ee Interbauen Tokyo55 PrettyPrincess




вторник, 2 августа 2011 г.

Upgrade your APC extension (3.0.17+)

Начал щупать Symfony2.
Сразу при установке, сталкнулся с такой проблемой - 'Upgrade your APC extension (3.0.17+)'.

Alternative PHP Cache просят установть. Погуглил-поискал.

Решение такое:
1) Качаем php_apc.dll.zip
2) Кладем в папку с расширениями в php. У меня, например, - 'C:\Program Files\php\ext'.
3) В php.ini (C:\Program Files\php\ext\php.ini) к списку расширений добавляем extension=php_apc.dll
4) Перезапускаем сервер

вторник, 19 июля 2011 г.

Запуск Command Prompt с путем по умолчанию

В ярлыке в поле Target указываем
cmd /K "D:&&cd workspace"
где:
D: - смена диска
%% - разделитель комманд
cd workspace - смена папки

вторник, 5 июля 2011 г.

VCF. Объединение контактов.

Когда-то давно-давно (году в 2006-7) я регулярно делал бэкап контактов из телефона. Тогда у меня был еще какой-то старенький Nokia. Каждый контакт хранился в отдельном VCF файле. Может быть и до сих пор Нокиа так хранит контакты. Так у меня и валялась эта папка лет 5, пока не стало лень и я не решил засунуть всё это в Google Contacts. Не найдя, как сделать импорт из нескольких файлов, пришлось написать маленький скриптик для объединения всех контактов в один VCF-файл.
<?php
define('INPUT_DIR', 'input');
define('OUTPUT_DIR', 'output');
define('OUTPUT_FILENAME', 'contacts.vcf');

$outputFileName = OUTPUT_DIR . DIRECTORY_SEPARATOR . OUTPUT_FILENAME;
$directoryIterator = new DirectoryIterator(INPUT_DIR);

foreach ($directoryIterator as $item) {
    if ($item->isFile()) {
        $extension = substr(strrchr($item->getBasename(), '.'), 1);
        if(strtolower($extension) == 'vcf') {
            $content = file_get_contents($item->getPathname());
            file_put_contents($outputFileName, $content, FILE_APPEND);
        }
    }
}
?>
Может кому-нибудь пригодится ;)

Обновление от 26 февраля 2012 года:
Для того, чтобы запустить скрипт нужно иметь "под рукой" установленный PHP.
Скопируйте код, приведенный выше, в отдельный файл, скажем vcf.php. Затем рядом с этим файлом создайте папку input и output. В input положите все ваши vcf файлы и запустите скрипт. скрипт отбединит все файлы в один contacts.vcf.

По странному стечению обстоятельств я именно сегодня буду делать эту операцию с телефоном девушки :-) Забавно.