Мой первый читер и сравнение исходниковMy first cheater and sources comparison
Difference between ru1 and en1, changed 1,657 character(s)
Поздравьте меня — на моём сайте CodeAbbey обнаружен первый крупный читер. Блин! Чел не поленился скопировать и слегка отрефакторить 125 задач (видимо, у коллеги) — чтобы попросить сертификат. Зачем — ума не приложу. Это же не сертификат оракла или микрософта. Но потратил в сумме недели три. Выглядит это так:↵

[оригинальный код
I'm so plesed — I have first great cheater at my site CodeAbbey. Well... damn! This fellow was not lazy — he copied and slightly refactored about 125 solutions (I believe, shared by his colleague) — and then asked for certificate. Why he want it — no idea! It is not certificate by Oracle or Microsoft. Anyway he spent about 3 weeks and see how it looks like:↵

[original source
](http://pastebin.com/qtqu6att)↵

[
код последователяsource pretending to look different](http://pastebin.com/d9yFzZSy)↵

(
А может мне только кажется что они похожи?)↵

**Ну, кроме шуток** я задумался — сейчас мне не очень-то трудно было обнаружить жульничество — т.к. пользователей-то не много, а уж решивших помногу — лишь несколько десятков. Но если такое повторится в более светлом будущем, хорошо бы иметь инструментарий для автоматического сравнения.↵

Пока обмозговываю — можно по коду считать какие-то метрики / хэши и записывать вместе с решением. Ну скажем, количество знаков препинания, символьных операторов. Потом для проверяемого пользователя найти еще одного с близкими показателями метрик. В общем что-то вроде
And probably it is only my imagination — their similarity?)↵

**Well, jokes aside — I have a trouble** — this time it was easy enough to find cheating since there are not too many users — and only few dozens top-users. But if such cases will repeat when there are more people... I may want some automated comparison of sources.↵

Current idea — I can calculate certain metrics / hashes over the solution and save them along with it. They can be, well, amounts of puncuation symbols, operator symbols etc. And when I need to check the user — we would find few with the closest set of metrics. Something like
 Locality-Sensitive- Hashing получается. Однако прежде чем врукопашную и наобум экспериментировать — решил спросить — вдруг уже более-менее проторенные дорожки есть? Быть может кто-то уже сталкивался (а то и собаку съел) с похожими задачами — и подскажет направление?↵

Догадываюсь что администрация CF имеет свои способы наверняка — но как подсказывает мудрый коллега, наверняка они достаточно засекречены во избежание сами понимаете чего
. But I before trying to experiment with this blindly I decided to ask clever community — perhaps some people already have worked with similar tasks and could hint on some good ideas to look at / learn from?↵

I believe, for example, that CF administration have their own tools — but as one wise colleague suggested, they probably are not going to share their know-how to avoid sharing secrets with cheaters at the end...
 :o

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en2 English RodionGork 2015-07-10 20:11:36 1 minor change
en1 English RodionGork 2015-07-10 20:09:20 1657 Initial revision for English translation (published)
ru1 Russian RodionGork 2015-07-10 20:00:15 1571 Первая редакция (сохранено в черновиках)