Я натрапив на SVGCaptcha і одразу зрозумів, що це погана ідея.
Я хотів би, щоб ви показали, наскільки це погана ідея, витягуючи код перевірки з SVG-зображень, які створює код.
Приклад зображення виглядає приблизно так:
Ось джерело прикладу зображення:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
width="200" height="40"
> <rect x="0" y="0" width="200" height="40"
style="stroke: none; fill: none;" >
</rect> <text style="fill: #4d9363;" x="5" y="34" font-size="20" transform="translate(5, 34) rotate(-17) translate(-5, -34)">8</text>
<text style="fill: #be8b33;" x="125" y="29" font-size="21" transform="translate(125, 29) rotate(17) translate(-125, -29)">f</text>
<text style="fill: #d561ff;" x="45" y="35" font-size="20" transform="translate(45, 35) rotate(-2) translate(-45, -35)">4</text>
<text style="fill: #3de754;" x="85" y="31" font-size="21" transform="translate(85, 31) rotate(-9) translate(-85, -31)">8</text>
<text style="fill: #5ed4bf;" x="25" y="33" font-size="22" transform="translate(25, 33) rotate(16) translate(-25, -33)">u</text>
<text style="fill: #894aee;" x="105" y="28" font-size="25" transform="translate(105, 28) rotate(9) translate(-105, -28)">1</text>
<text style="fill: #e4c437;" x="65" y="32" font-size="20" transform="translate(65, 32) rotate(17) translate(-65, -32)">x</text>
</svg>
Вхід - це зображення SVG, яке є текстовим форматом.
Єдине реальне обмеження полягає в тому, що ваш код повинен створювати значення у правильному порядку .
Елементи введення <text>знаходяться у випадковому порядку, тому вам слід звернути увагу на xатрибут у <text>тезі
Оцінка - кількість байтів у коді
Оскільки в даний час код робить два перетворення, які скасовують одне одного, ви можете їх ігнорувати, але якщо ви все-таки врахуєте їх, продовжуйте і знімайте на 30% зменшення свого бала.

Зробіть напрямок виконання справа наліво та оберніть його, щоб почати основну петлю.
Прочитайте таблицю від stdin та перевіряйте на значення кінця файлу.
Якщо це не кінець файлу, перевірте, чи він є
Якщо це не a
Якщо ні, помножте на 126, а мод на 126 2, щоб скинути найстарше значення з пари та звільнити місце для наступного символу.
Якщо
Якщо виникає a
Нарешті, коли потім буде досягнуто кінця файлу, повторіть 7 значень, збережених у масиві, та виведіть їх по одному. Це має дати вам усі листи-капчу у правильному порядку.