Торговий автомат Emoji


23

Не можете бачити емоджи? Натисніть тут .

Ви будете імітувати автомат. Елементи 56 різних емоджи, які можуть бути представлені у вигляді двох сурогатних символів UTF-8, від: 🍅 (U + D83C U + DF45) до 🍼 (U + D83C U + DF7C). У HTML ці емоджи можуть бути представлені у формі UTF-16 як & # x1F345 через & # x1F37C . У базі 10 перший символ UTF-8 має значення 55356 . Значення другого символу коливається від 57157 до 57212 . Ось програма CJam, яка генерує всі відповідні емоджи. Щоб уникнути плутанини, цей виклик буде оцінюватися символами, а не байтами . Деякі емоджи - це два символи, а інші - 3. http://www.lettercount.com дасть точний підрахунок цього завдання.

Ціноутворення 💵💵💵

Є 8 різних цінових категорій:

  • $ 1,00: 🍅🍆🍇🍈🍉🍊🍋
  • 1,50 дол. США: 🍌🍍🍎🍏🍐🍑🍒
  • $ 2,00: 🍓🍔🍕🍖🍗🍘🍙
  • 2,50 дол. США: 🍚🍛🍜🍝🍞🍟🍠
  • $ 3,00: 🍡🍢🍣🍤🍥🍦🍧
  • 3,50 дол. США: 🍨🍩🍪🍫🍬🍭🍮
  • $ 4,00: 🍯🍰🍱🍲🍳🍴🍵
  • 4,50 дол. США: 🍶🍷🍸🍹🍺🍻🍼

Відображення торгового автомата

Це те, що бачить користувач при запуску програми та після здійснення покупки. Ви можете використовувати звичайні номери замість номерів смайлів, але номери емоджи мають ту саму ширину, що й інші емоджи. Якщо ви використовуєте номери смайлів, ви можете відняти 14 балів із вашої оцінки, оскільки числа емоджи - це 3 символи.

  1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼 

Якщо користувач входить G5, вибирає 🍳. Введення E6вибирає 🍦.

Додавання готівки 💸💸💸

Щоб додати гроші, користувач повинен ввести, /а потім код для монети або рахунку. Монети - (N) ікель ($ 0,05), (D) ім'я ($ 0,10) і (Q) гірші (0,25 $). Рахунки складають (O) ne (1,00 $), (F) ive ($ 5,00), (T) en (10,00 $). Кожен раз, коли користувач додає купюру або монету, програма повинна виводити Balance: [New Balance]. Щоразу можна додавати лише одну купюру чи монету. Ось приклад, що містить три рядки введення:

/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35

Вибір елементів

Користувач вибирає елемент, вводячи код товару, наприклад, B2або C3. Якщо користувач не додав грошей, програма повинна вивести Item Cost: [Cost of Item]. Якщо користувач додав гроші, але його недостатньо для придбання товару, результат повинен бути Insufficient Funds. Item Cost: [Cost of Item]. Якщо користувач додав достатньо грошей, програма повинна вивести:Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item] . Потім на власному рядку роздрукуйте смайли придбаного товару. Потім роздрукуйте весь торговий автомат (див. "Відображення торгового автомата") із придбаним предметом, заміненим на 🚫 (U + D83D U + DEAB) База 10: (55357 57003).

Закінчення Програми

Якщо користувач купує предмет, який приводить його баланс до 0,00 доларів, програма автоматично припиняється. Крім того, якщо користувач будь-коли вводить "Готово", програма повинна забезпечити користувачеві свій залишок балансу в зміну. Зміна повинна бути лише в нікелях, димесах і четвертинах, і повинна бути найменшою можливою кількістю монет. Наприклад, якщо залишок залишку становить 1,45 долара, результат повинен бути QQQQQDD.

Виконання зразків

(Введення починається з "-")

  1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼  
-E1
Item Cost: $3.00
-/F
Balance: $5.00
-E1
Item at E1 Purchased. Remaining Balance: $2.00
🍡 
  1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🚫🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
-Done
QQQQQQQQ

Недійсні коди

  • Якщо вхід починається з, /але не є дійсним введенням грошей, виведіть Money not Accepted.
  • Якщо вхід - це вже придбаний предмет, виведіть Item out of stock
  • Якщо вхід - це комбінація цифр-літер, яка не знаходиться в діапазоні (наприклад, A0або J2, виведіть "Недійсний код"
  • Для всіх інших недійсних даних введіть "Помилка"

Бонус (-15%): варення

Під час продажу товару є 10% шансів, що машина заклинить, і товар застрягне. Виведіть JAM!!!один раз. У цьому випадку користувач повинен ввести "удар" або "удар". Кожен раз, коли користувач робить це, є 20% шансів, що товар вирветься і продається як звичайне. Поки варення не усунеться, єдиними визнаними входами є "удар" і "удар". Усі інші входи нічого не роблять. Ось зразок:

-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚

(Варення очищено. Відновіть як нормально.)

Бонус (-10%): ідентифікатор

Якщо користувач намагається придбати алкогольний напій (будь-який предмет останнього ряду, крім пляшечки для немовляти), потрібно вимагати підтвердження віку. Для цього ви просите користувача помножити два випадкових числа між 13 та 19 (включно). Вихідні дані ID required: [13-19]x[13-19] = ?. Якщо користувач відповість правильно, покупка може пройти. Якщо ні, надрукуйте base (U + D83D U + DD1E) на базі 10: (55357 56606)

Альтернативний виклик: Minecraft

Цей виклик здається чимось можливим у Minecraft. Щоб успішно створити Minecraft версію цієї програми, гравець повинен

  • Майте сітку 8х7, щоб вибрати з 56 унікальних предметів
  • Умійте додавати гроші на баланс (Можливо, використовуйте різні види каміння для різних номіналів, описаних вище.)
  • Дайте користувачеві той предмет, який він / вона вибере, якщо вони вклали достатньо "грошей"
  • Поверніть користувачеві відповідну кількість змін наприкінці.

Режим сумісності

  • Я можу взяти вклад лише на початку програми

    • Не хвилюйтесь, ви можете зробити програму, яка займає весь вхід наперед. Якщо ваша програма не закінчилася після оцінки всіх вхідних даних, припустіть, що в кінці викликається "Готово". Якщо ви скористаєтеся цим методом, ви не отримаєте жодних бонусів.
  • Я не можу переглянути / вивести емоджи

    • Ви можете скопіювати та вставити вхід та вихід у цей фрагмент стека (або тут ). Він може зрозуміти як unicode emojis, так і HTML коди для emojis. Якщо ваш результат виглядає правильним на цій сторінці, програма проходить. Спробуйте вставити деякий зразок вводу / виводу, щоб побачити, як це виглядає.

function parse() {
var o = document.getElementById("output");
var text = document.getElementById("in").value;
o.innerHTML = text.replace(/\n/g,"<br/>").replace(/ /g,"&nbsp");
twemoji.parse(o);
}
<head>
<script src="//twemoji.maxcdn.com/twemoji.min.js"></script>  
</head>
<body>
<h1>Emoji to Image</h1>
<textarea id="in" rows="10" cols="50"></textarea>
<input type="submit" onclick="parse()">
<div id="output"></div>
</body>

Ось скорочена версія режиму сумісності дисплея торгового автомата, яку можна протестувати у фрагменті стека:

   &#x31&#x20E3&#x32&#x20E3&#x33&#x20E3&#x34&#x20E3&#x35&#x20E3...
A&#x1F345&#x1F346&#x1F347&#x1F348&#x1F349...
B 
...
  • Я можу вивести емоджи, але не для STDOUT.

    • Здається, що термінал Mac OS X - єдиний, кому відомо, що може виводити емоджи. Якщо ви не можете вивести емоджи на своєму терміналі, інші ваші варіанти
      • Надіслати весь вихід у файл.
      • Відобразити весь вихід у вікні.
      • Використовуйте техніку, описану в "Я не можу переглянути / вивести емоджи".

5
$ can be replaced with your local currencyне має особливого сенсу, якщо ви вимагаєте, щоб монети були (N) ickels (D) imes та (Q) uarters. Я пропоную вам зняти його, оскільки це додасть плутанини.
Рівень Св. Св.

@steveverrill Хороший момент. Я це змінив. Моє запитання: чи не мають американські клавіатури кнопку $, чи існує код для неї?
геокавель

$символ є частиною набору ASCII символів, тому можна з упевненістю припустити , майже всі клавішні і мову можуть впоратися з цим. Це єдиний символ валюти в 7-бітовому наборі символів ASCII. Як результат, інші символи, такі як символ GBP або символ EUR, можуть бути неправильно надані через несумісні кодові рядки, але це практично ніколи не буває $.
Рівень річки Св.

@steveverrill Я знаю, що вони можуть це впоратися, але чи є фізична кнопка клавіатури для цього?
geokavel

У моїх британських та іспанських клавіатур є додатково до відповідних символів у місцевій валюті, і я думаю, що інші теж. Окрім того, що є найбільш широко використовуваним символом валюти у світі (у тому числі для багатьох валют, які не називаються доларами), цей $символ має особливе значення у більшості мов програмування, тому відсутність його на клавіатурі було б серйозним обмеженням. Я набираю це на моїй іспанській клавіатурі, і насправді легше отримати $ (shift + 4), ніж € (alt gr + E), щоб ви могли бачити, що останній символ додається як думка.
Рівень річки Св.

Відповіді:


8

PHP, (1295 - 14) - 25% = 960,75 символів

Старі бали 1315 1351 1361 1295 989 977

Це було весело, і це перша відповідь - так.

$i=[A=>[🍅,🍆,🍇,🍈,🍉,🍊,🍋],B=>[🍌,🍍,🍎,🍏,🍐,🍑,🍒],C=>[🍓,🍔,🍕,🍖,🍗,🍘,🍙],D=>[🍚,🍛,🍜,🍝,🍞,🍟,🍠],E=>[🍡,🍢,🍣,🍤,🍥,🍦,🍧],F=>[🍨,🍩,🍪,🍫,🍬,🍭,🍮],G=>[🍯,🍰,🍱,🍲,🍳,🍴,🍵],H=>[🍶,🍷,🍸,🍹,🍺,🍻,🍼]];$p=[A=>1,B=>1.5,C=>2,D=>2.5,E=>3,F=>3.5,G=>4,H=>4.5];$v=[N=>.05,D=>0.1,Q=>.25,O=>1,F=>5,T=>10];a:$m='';$w=$x=0;$q=$c[0];$r=$c[1];$f=fgets;$n=rand;$u=number_format;if('Done'==$c&&$e=1)foreach([Q,D,N]as$_)while($b&&round($b-$v[$_],2)>=0&&$m.=$_)$b-=$v[$_];elseif('/'==$q){$v[$r]?$b+=$v[$r]:$m="Money not accepted
";$m.="Balance: $".$u($b,2);}elseif(in_array($q,range(A,Z))){if(0<$r&&8>$r--&&($_=$p[$q])){$b&&$b<$_?$m="Insufficient funds. ":0;if($b<$_)$m.="Item cost: $".$u($_,2);elseif(👾==$i[$q][$r])$m="Item out of stock.";else{$t=0;if(H==$q&&$r<6){$t=$n(13,19);$s=$n(13,19);echo"ID required: {$t}x$s = ?
";if($f(STDIN)!=$t*$s)$m=🔞;else$t=0;}if(!$t){$b-=$_;if(1>$n(0,9)){$w=1;}$x=$i[$q][$r];$m="Item at $c purchased. Remaining balance: $".$u($b,2).($w?"":"
$x");$i[$q][$r]=👾;if(!$b)$e=1;}}}else$m="Invalid code";}if($c&&!$m&&!$e)$m=Error;system(clear);echo"  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣";foreach($i as$k=>$_){echo"
$k ";foreach($_ as$_)echo"$_ ";}echo"
$m
";if($w){echo"JAM!!!
";for(;$c!=kick&&$c!=punch||7>$n(0,9);$c=trim($f(STDIN)));echo"$x
";}$e?exit:$c=trim($f(STDIN));goto a;

Оскільки торгові автомати нагадують мені про 90-ті роки, які я використовував, gotoа для придбаних предметів показано Space Invader 👾 . Машина перемальовується після кожної команди.

Безумовно (якось)

$i=[A=>[🍅,🍆,🍇,🍈,🍉,🍊,🍋],B=>[🍌,🍍,🍎,🍏,🍐,🍑,🍒],C=>[🍓,🍔,🍕,🍖,🍗,🍘,🍙],D=>[🍚,🍛,🍜,🍝,🍞,🍟,🍠],E=>[🍡,🍢,🍣,🍤,🍥,🍦,🍧],F=>[🍨,🍩,🍪,🍫,🍬,🍭,🍮],G=>[🍯,🍰,🍱,🍲,🍳,🍴,🍵],H=>[🍶,🍷,🍸,🍹,🍺,🍻,🍼]];
$p=[A=>1,B=>1.5,C=>2,D=>2.5,E=>3,F=>3.5,G=>4,H=>4.5];
$v=[N=>.05,D=>0.1,Q=>.25,O=>1,F=>5,T=>10];

a:
$m='';
$w=$x=0;
$q=$c[0];
$r=$c[1];
$f=fgets;
$n=rand;
$u=number_format;

if('Done'==$c&&$e=1)
    foreach([Q,D,N]as$_)
        while($b&&round($b-$v[$_],2)>=0&&$m.=$_)
            $b-=$v[$_];
elseif('/'==$q){
    $v[$r]?$b+=$v[$r]:$m="Money not accepted
";
    $m.="Balance: $".$u($b,2);
}elseif(in_array($q,range(A,Z))){
    if(0<$r&&8>$r--&&($_=$p[$q])){
        $b&&$b<$_?$m="Insufficient funds. ":0;
        if($b<$_)$m.="Item cost: $".$u($_,2);
            elseif(👾==$i[$q][$r])
                $m="Item out of stock.";
            else{
                $t=0;
                if(H==$q&&$r<6){
                    $t=$n(13,19);
                    $s=$n(13,19);
                    echo"ID required: {$t}x$s = ?
";
                    if($f(STDIN)!=$t*$s)
                        $m=🔞;
                    else
                        $t=0;
                }
                if(!$t){
                    $b-=$_;
                    if(1>$n(0,9)){
                        $w=1;
                    }
                    $x=$i[$q][$r];
                    $m="Item at $c purchased. Remaining balance: $".$u($b,2).($w?"":"
$x");
                    $i[$q][$r]=👾;
                    if(!$b)$e=1;
                }
            }
    }else
        $m="Invalid code";
}

if($c&&!$m&&!$e)$m=Error;

system(clear);
echo"  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣";
foreach($i as$k=>$_){
    echo"
$k ";
    foreach($_ as$_)
        echo"$_ ";
}
echo"
$m
";

if($w){
    echo"JAM!!!
";
    for(;$c!=kick&&$c!=punch||7>$n(0,9);$c=trim($f(STDIN)));
    echo"$x
";
}

$e?exit:$c=trim($f(STDIN));
goto a;

Тестується на OS X з PHP 5.5 та 5.6 👾


Правки

  • Додано 12 байт . Фіксований вихід на Doneдекілька струн та гольф.
  • Додано 306 байт . Виправлено одну або дві помилки та додано підтримку бонусів. З бонусами тепер це майже на 15 байт коротше.
  • Додано 66 байт . Якщо довелося форматувати гроші по-іншому, також довелося прийняти більше значень ( [A-Z][0-9]) Invalid code.
  • Збережено 10 байт . Знайдено один пробіл і перетворили деякі .=INTO =застосовні.
  • Збережено 36 байт завдяки деякому рефакторингу.
  • Збережено 20 байт шляхом рефакторингу деяких циклів та завдань.

Нічого собі, це було дуже весело грати! Єдине питання, який я помітив: Вам потрібно відформатувати ціни, такі як 3 і 3,5, на 3,00 і 3,50 доларів.
геокавель

Крім того, під час введення J5я повинен отримати повідомлення: "Недійсний код".
geokavel

@geokavel Дякуємо за ваш відгук. Я додав правильний формат грошей, і він також зараз приймає більше варіантів Invalid code. Це цікавий виклик - навіть якщо у нього багато варіантів… 1К символів говорять самі за себе… :)
вставтекористувач тут

Вітаємо, з вузьким відривом ви переможець! Дякую обом гравцям за те, що ви були гідними конкурентами та завзято намагалися переграти один одного в гольфі!
geokavel

@geokavel Це був цікавий виклик та приємний пінг-понг між Стефаном та мною. Якщо в майбутньому хтось придумає коротше рішення, я буду там. ;)
вставитикористувач туди

5

C # 6 (.Net Framework 4.6), 1356 1324 1304 1311 1307 1 238 1235 1231 1220 Букви - 14 Букви (Emoji чисел) - (15% Джем бонус + 10% бонус ID) = 1017 993 978 972,75 969,75 918 915,75 904,5 Листи

using h=System.Console;class c{static void Main(){double b=0,z,p,x=0,i=57157,j,n,r,c,m;var a=1==0;var d=new System.Collections.Hashtable();for(;i<57213;)d.Add(x++,""+(char)55356+(char)i++);for(var e=new System.Random();;){for(w("  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣"),x=0;x<8;x++,w(""))for(h.Write((char)('A'+x)),i=0;i<7;)h.Write(" "+d[x*7+i++]);for(;;){var k=h.ReadLine();if(k[0]==47){var l=k[1];z=b;b+=l=='N'?.05:l=='D'?.1:l=='Q'?.25:l=='O'?1:l=='F'?5:l=='T'?10:0;a=a|z!=b;w(z!=b?$"Balance {b:0.00}":"Money not Accepted");}else{if(k=="Done"){for(;b/.25>=1;b-=.25)h.Write("Q");for(;b/.1>=1;b-=.1)h.Write("D");for(;b/.05>=1;b-=.05)h.Write("N");return;}r=k[0]-65;c=k[1]-49;if(r<0|r>7|c<0|c>6)w("Invalid code");else{p=1+r/2;if(!a|p>b)w($"{(a&p>b?"Insufficient Funds. ":"")}Item Cost: ${p:0.00}");else{m=r*7+c;if(d[m]=="🚫")w("Item out of stock");else{if(r>6&c<6){j=e.Next(13,20);n=e.Next(13,20);w($"ID required: {j}x{n} = ?");if(int.Parse(h.ReadLine())!=j*n){w("🔞");break;}}b-=p;w($"Item at {k} Purchased. Remaining Balance: ${b:0.00}");if(e.Next(10)==1)for(w("Jam!!!");;){var f=h.ReadLine();if((f=="punch"|f=="kick")&e.Next(10)<2)break;}w(""+d[m]);d[m]="🚫";if(b==0)return;break;}}}}}}}static void w(string s)=>h.WriteLine(s);}

трохи більше без вогонь для використання в LinqPad 5 (C # 6). Використовуйте h = System.Console у F4.

void Main()
{
    double b=0,z,p,x=0,i=57157,j,n,r,c,m;
    var a = 1==0;
    var d = new Hashtable();
    for (; i < 57213;) d.Add(x++, ""+(char)55356 + (char)i++);
    for (var e = new Random(); ;)
    {
        for (w("  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣"), x = 0; x < 8; x++, w(""))
            for (h.Write((char)('A' + x)), i = 0; i < 7;)
                h.Write(" " + d[x * 7 + i++]);

        for (; ;)
        {
            var k = h.ReadLine();
            if (k[0] == 47)
            {
                var l = k[1];
                z = b;
                b += l == 'N' ? .05 : l == 'D' ? .1 : l == 'Q' ? .25 : l == 'O' ? 1 : l == 'F' ? 5 : l == 'T' ? 10 : 0;
                a = a|z!=b;
                w(z != b ? $"Balance {b:0.00}" : "Money not Accepted");
            }
            else
            {
                if (k == "Done")
                {
                    for (; b / .25 >= 1; b -= .25) h.Write("Q");
                    for (; b / .1 >= 1; b -= .1) h.Write("D");
                    for (; b / .05 >= 1; b -= .05) h.Write("N");
                    return;
                }
                r = k[0] - 65;
                c = k[1] - 49;
                if(r<0|r>7|c<0|c>6)w("Invalid code");
                else
                {
                    p = 1 + r / 2;
                    if (!a | p > b) w($"{(a&p>b?"Insufficient Funds. ":"")}Item Cost: ${p:0.00}");
                    else
                    {
                        m = r * 7 + c;
                        if (d[m] == "🚫")
                            w("Item out of stock");
                        else
                        {
                            if (r > 6 & c < 6)
                            {
                                j = e.Next(13, 20);
                                n = e.Next(13, 20);
                                w($"ID required: {j}x{n} = ?");
                                if (int.Parse(h.ReadLine()) != j * n)
                                {
                                    w("🔞");
                                    break;
                                }
                            }

                            b -= p;
                            w($"Item at {k} Purchased. Remaining Balance: ${b:0.00}");
                            if (e.Next(10) == 1)
                                for (w("Jam!!!"); ;)
                                {
                                    var f = h.ReadLine();
                                    if ((f == "punch" | f == "kick") & e.Next(10) < 2)
                                        break;
                                }
                            w(""+d[m]);
                            d[m] = "🚫";
                            if (b == 0) return;
                            break;
                        }
                    }
                }
            }
        }
    }
}

void w(string s)=>h.WriteLine(s);

редагувати: дякую за (;;) підказку;)

редагувати: Страйк !! Краще ніж PHP ;-)

редагувати: Видалено 24 літери. Ще щось залишилося для php.

редагувати: Видалено 20 літер шляхом переходу з десяткових на подвійні.

редагувати: Видалено 7 літер, перейшовши на номери Emoji

редагувати: Видалено 4 літери, переключивши все на подвійне замість поєднання подвійних та вставних.

редагувати: Видалено 69 Букви - знайдений мертвий код o_O Кращий запис C #: D

редагувати: Видалено 3 букви - перемикається останній оператор if-else

редагувати: Видалено 4 літери - переключено з операторів короткого замикання (&& та ||) на нормальне & та |

редагувати: Видалено 11 літер - перемкнено з h.WriteLine на w () із умовно-дослівним рядком.


Виглядає добре. Я був в змозі перевірити його тут зі статичним входом. Чи є спосіб перевірити його в Інтернеті чи на Mac з динамічним входом?
geokavel

Ви можете перевірити його за допомогою динамічного введення тут , хоча емоджи відображаються як ??.
geokavel

Єдине питання, яке я виявив у вашому, полягає в тому, що "Недійсний код" повинен відображатися лише для комбінації цифр, яка не знаходиться в діапазоні. Усі невизначені помилки повинні видавати "Помилка".
geokavel

на моєму шляху @insertusernamehere: D
Stephan Schinkel

Гей .... я отримав це під php :) @insertusernamehere
Стефан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.