Posts Tagged PHP

Решение для решателя Sudoku

Хотел вечерком размять мозг — набросать какой-нибудь особенно красивый решатель Sudoku на Ocaml. Но возникла мысль изучить вражеские аналоги. Итак, решатель Sudoku размером 800 с небольшим байт:

include Set.Make(struct type t = (int * int) * int let compare = compare end)
 
let (@) g f x = g (f x) and id x = x and sw f x y = f y x and zip x y = (x, y)
 
let fold9 f = let rec loop i = if i>8 then id else loop (i+1) @ f i in loop 0
 
let fold81 f = fold9 (fold9 @ (@) f @ zip)
 
let mark ((i,j),x as e) : t -> t =
  add e @ fold9 (fun k -> remove ((i/3*3 + k/3, j/3*3 + k mod 3), x) @
    remove ((i,j),k) @ remove ((i,k),x) @ remove ((k,j),x))
 
let search =
  let g p f s = fold (f @ sw mark s) (filter ((=) p @ fst) s) in
  fold81 g
 
let read () =
  let f p = Scanf.scanf "%d " (fun x -> if x>0 then mark (p,x-1) else id) in
  fold81 f (fold81 (fold9 @ ((@) add @ zip)) empty)
 
let print s () =
  let pr ((i,j),x) = Printf.printf "%d%c" (x+1) (if j=8 then '\n' else ' ') in
  iter pr s; print_newline ();;
 
search print (read ()) ()

Вы посмотрите эту красоту, это же [почти] совершенство! А если учесть, что 272 байта — это чтение задачи с STDIN и вывод результата, размер кода сокращается до менее чем 600 байт.

Read the rest of this entry »

, , , ,

No Comments

Продолжаем бороться со спамом в комментариях

Не думаю, что кому-то из комментаторов придёт в голову оформлять ссылки в комментариях с использованием HTML-тэгов. А вот спамеры этим пользуются постоянно. Им ссылки на сайты нужны. ТИЦ/PR, видите ли… Посему, постановляю:

— wp-comments-post.php.orig    2008-12-30 03:12:34.000000000 +0000
+++ wp-comments-post.php    2008-12-30 03:25:01.000000000 +0000
@@ -30,7 +30,6 @@
$comment_content      = trim($_POST['comment']);

+if ($comment_author_url) { exit; }
+if (preg_match(’#<a[^>]+href=#is’, $comment_content)) { exit; }

// If the user is logged in
$user = wp_get_current_user();

UPDATE: а они всё ломятся и ломятся, болезные:

# zcat *.access.log.*.gz | grep POST | grep wp-comments | cut -d’ ‘ -f4 | cut -d: -f1 | uniq -c
11 [06/Jan/2009
18 [05/Jan/2009
11 [04/Jan/2009
6 [03/Jan/2009
17 [02/Jan/2009
18 [01/Jan/2009
17 [31/Dec/2008
15 [30/Dec/2008
1 [31/Dec/2008
15 [29/Dec/2008
22 [28/Dec/2008

По 15 человек в день. Но с момента написания этого поста, я ещё ни одного комментария не удалил. Эффективность 100%.

, , , , ,

3 Comments