С днем ​​рождения меня!

21

С днем ​​рождения меня!

Напишите программу, которая печатает Happy birthday to me!на свой день рождения.

  1. День рождения программы - это время создания, последней модификации или компиляции программы (вы выбираете), и он не должен быть жестко запрограммирован.
  2. Дата, которую вы используете в качестве дня рождения, никоим образом не должна зависеть от вызова или выполнения программы. Вы не можете изменить свой день рождения.
  3. Для дополнительного кредита (количество байт -15%) напечатайте Happy birthday to you!в свой день рождения (жестко запрограммированный), если он не совпадает с днем рождения программы. Или используйте день рождения какой-нибудь знаменитости и получите -14%.
  4. Он должен печатать только это, и не печатать ничего в любой другой день.
  5. Подсчет байтов, в UTF-8.
  6. Используйте григорианский календарь.

Удачи и с днем ​​рождения (для новорожденных программ).

PS
После комментария Изкаты, если вы печатаете Happy birthday to Melв день рождения Мела Кая , вы получаете скидку 20%. Но вы должны предоставить достоверный источник, что именно эта дата.

ugoren
источник
1
@TeunPronk, вы не можете сделать оба. Или используйте свой собственный день рождения, или день рождения знаменитости (или ни одного, и откажитесь от дополнительного кредита).
Угорен
4
@TeunPronk: Только Джон Скит может: P
MSalters
11
Я увидел это на боковой панели «Горячие вопросы» и прочитал «С Днем Рождения Мел » ...
Изката,
1
@PeterTaylor: А? Начисление различных видов бонусных бонусов за дополнительные функции довольно распространено для вопросов по коду-гольфу , и я никогда раньше не видел, чтобы кто-то утверждал, что это лишит права использовать этот тег, если основным критерием оценки является длина кода.
Ильмари Каронен
1
@Izkata, обновил вопрос в честь Мел.
Угорен

Ответы:

10

PHP 77 75 74 65 60

Большое спасибо превосходным предложениям Тима Сегейна :

<?date(dm,getlastmod())-date(dm)&&die?>Happy birthday to me!

Подлый PHP: 46 42 41 40

Используя идею Фила Х и снова предложение Тима Сегина :

<?touch(__FILE__)?>Happy birthday to me!
ComFreek
источник
Разве это не включает год в сравнении? если это так, он работает только на 0-й день рождения.
Угорен
@ugoren Ты прав! Спасибо за исправление. 2 байта сохранены.
ComFreek
Если в правилах «ничего не предначертано» понимается как стандартный вывод, то вы можете выиграть 4 байта, удалив ''вокруг dmстрок. Он выдал предупреждение, но я считаю, что он отправляется со стандартной ошибкой, если включено сообщение об ошибке.
Тим Сегин
4
<?date(dm,stat(__FILE__)[9])-date(dm)&&die?>Happy birthday to me!
Тим Сегин
1
@TimSeguine Спасибо за ваши предложения! Я включил их в свой ответ, надеюсь, вы не против.
ComFreek
48

Баш (подлый): 36

touch $0;echo Happy Birthday to me\!

По правилам: «Время создания, модификации или компиляции программы». Я выбираю время модификации, и вечную само-модификацию. [HT @ace для 1 символа]

Perl (также подлый): 29

print "Happy birthday to me!"

Этот, возможно, менее подлый, чем первый; Программы на Perl всегда компилируются до того, как они выполняются, что не все знают - понимаете, в области подлости прослеживается образование. Итак, вот дата компиляции, которую я использую.

- Изменить для изменения правила -

Это было написано до того, как появилось какое-либо правило об изменении вашего дня рождения. Я думаю, что Perl еще стоит; все программы на Perl компилируются до их запуска. Я оставлю ответ здесь для образовательных целей!

Фил Х
источник
6
Хорошо, мошенник, получите мой +1 за ум.
Виктор Стафуса
1
Вы можете избежать !с \!и удалить кавычки, чтобы сохранить 1 символ
user12205
1
Хороший трюк, но правила явно запрещают это (сейчас).
Угорен
1
@ugoren Все еще не запрещает Perl-решение, которое компилируется до запуска программы .
Cruncher
3
@ Крунчер, боюсь, ты прав. Я проконсультируюсь со своим адвокатом и пришлю вам счет.
Угорен
13

Баш - 65

[ `date +%d%m -r $0` = `date +%d%m` ]&&echo Happy birthday to me!

Благодаря ugoren , асе и nyuszika7h за помощь.

shiona
источник
Я думаю, что вы можете избежать !с, \!так что вам не нужны кавычки и сохранить 1 символ.
user12205
На самом деле у меня были цитаты, так как я думал, что echo потребует их для пробелов. Я вынул их и не избежал восклицательного знака, и он все еще работал. Спасибо за совет!
Шион
2
Вам нужно бежать только !в интерактивных оболочках, а не в скриптах.
nyuszika7h
Вы можете сохранить два символа, используя [и ]вместо [[и ]].
nyuszika7h
1
Это работает, когда год не совпадает с датой создания?
Угорен
6

C # 198,05 (233 - 15%)

using s=System;class P{static void Main(){string t=s.DateTime.Now.ToString("Mdd"),b="1202";if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==t|b==t)s.Console.Write("Happy birthday to "+(b==t?"you!":"me!"));}}

отформатирован:

using s = System;
class P
{
    static void Main()
    {
        string t = s.DateTime.Now.ToString("Mdd"), b = "1202";
        if (s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd") == t | b == t)
            s.Console.Write("Happy birthday to " + (b == t ? "you!" : "me!"));
    }
}

191 (без бонуса)

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}

181,05 (213 - 15%)

С некоторыми дополнительными инструкциями (вам нужно скомпилировать это b.exeи запустить из каталога, в котором находится исполняемый файл), я могу получить это:

using s=System;class P{static void Main(){string t=s.DateTime.Now.ToString("Mdd"),b="1202";if(s.IO.File.GetCreationTime("b.exe").ToString("Mdd")==t|b==t)s.Console.Write("Happy birthday to "+(b==t?"you!":"me!"));}}

171 (без бонуса)

Те же инструкции, что и выше, на этот раз только печать сообщения в свой день рождения (так что без бонуса -15%).

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime("b.exe").ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}
RobIII
источник
Вы можете сэкономить несколько байтов в бонусных, добавив ,b="1202"==tпосле того, как получите строку даты, и использовать ее вместо этого.
ahruss
1
Благодарность! Хотя «несколько байтов» оказывается одним ... или я что-то упустил? Править Ах, я вижу; вы сказали, ,b="1202"==tно ==tчасть невозможна, так как это приводит к bool, а другая переменная является строкой. Вы не можете (AFAIK то есть) использовать два разных типа в одной декларации "var".
RobIII
Ах хорошо. Прошло много времени с тех пор, как я использовал C #. Виноват.
ahruss
Вы можете сократить более простую версию, сравнивая даты, а не строки. Это мужское использование чего-то вроде CreationTime.Date == DateTime.Today.
свик
Это будет работать только на сегодня / в этом году / день рождения 0. Как это будет работать в другие годы?
RobIII
5

Java - 275 - 15% = 233,75 с бонусом / 237 без бонуса

С бонусом:

import java.util.*;class L{public static void main(String[]y){int s=f(new Date());String j="Happy birthday to ";System.out.print(s==f(new Date(new java.io.File("L.class").lastModified()))?j+"me!":s==183?j+"you!":"");}static int f(Date d){return d.getMonth()*40+d.getDate();}}

Без бонуса:

import java.util.*;class L{public static void main(String[]y){if(f(new Date())==f(new Date(new java.io.File("L.class").lastModified())))System.out.print("Happy birthday to me!");}static int f(Date d){return d.getMonth()*40+d.getDate();}}

Я родился 23 апреля.

Виктор Стафуса
источник
1
С Днем Рождения , чтобы не за ;-) Просто спас вам еще один байт :-)
RobIII
@RobIII Спасибо, исправлено.
Виктор Стафуса
Кроме того, \n
новая строка
@RobIII Еще раз спасибо.
Виктор Стафуса
Да ... Я должен прекратить стрелять в собственную ногу: P Не за что;)
RobIII
3

Я очень горжусь этой маленькой уловкой, чтобы сохранить несколько байтов в сообщении. Я надеюсь, что это будет включено в другие ответы. Я первый подумал об этом!

питон

105 символов, без дополнительного кредита. Сохраните файл как «с днем ​​рождения меня» и запустите. Работает только по Гринвичу, и «день рождения» определяется как дата вашего рождения, а не как юбилей (также часто называют «день рождения»).

import sys,os,time
if (int(os.stat(*sys.argv).st_atime/86400)==int(time.time()/86400)):print sys.argv[0]

Чтобы это сработало, сохраните это как «с днем ​​рождения меня» и запустите python "happy birthday to me"

Примечание: конечно, в имени файла может присутствовать почти все, кроме небольшой начальной загрузки, что делает любой произвольно большой код сводящимся к начальной загрузке. Обычно я считаю это "изменой". Однако «с днем ​​рождения меня» не является неразумным именем файла - оно описывает, что делает программа, намного лучше, чем некоторые программы (например, «python»), поэтому в этом случае я собираюсь разрешить это :)

AMADANON Inc.
источник
Я думаю, что полагаться на имя файла - это обман (хотя я не запрещал это явно). Если это разрешено, почему бы просто не написать eval(sys.argv[0])?
Угорен
И я не удосужился определить день рождения, но это день, который наступает раз в год, когда человек отмечает годовщину своего рождения , а не тот день, когда вы родились.
Угорен
Угорен: Я упоминал об этом в своей заметке внизу (которая предшествует вашему комментарию). However, "happy birthday to me" is not an unreasonable filename - it describes what the program does, much better than some programs (e.g. "python"), so in this case I'm going to allow it
AMADANON Inc.
2

Матлаб: 66

t=dir('f.m');if strncmp(t.date,date,5),'Happy birthday to me!',end

Имя файла должно быть 'fm'

H.Muster
источник
1
На ваш день рождения он должен сказать : « С днем рождения тебя !» :-)
RobIII
@RobIII: Ой, ты прав, я недостаточно внимательно прочитал. Удалит вторую версию. Благодарность!
H.Muster
Я предполагаю, что strncmp(x, y, 5)сравнивает даты как 28-12-2013первые 15 символов ( 28-12например, 28 декабря). Это также работает, когда пользовательские настройки языка, yyyy/mm/ddнапример,? Matlab по умолчанию dd-mm-yyyyвсегда? (Просто любопытно). Редактировать Nevermind: нашел это! , Кажется, это так. Это не имеет значения , в любом случае для mm/dd/yyyyили с dd-mm-yyyyтех пор , как левый и правый операнд будет использовать тот же формат , в любом случае , и оба 5 самых левых символов будет соответствовать в любом случае; до тех пор, пока год не будет ведущим.
RobIII
Зачем вам нужна переменная t? Не dir('f.m').dateработает?
Угорен
@ugoren: tнеобходимо для dirвозврата атрибутов файла (в противном случае он просто вернул бы все файлы в каталоге, которые совпадают 'f.m'). Кроме того, tнеобходимо получить доступ кdate полю.
H.Muster
2

GNU COBOL с -free, 204

PROGRAM-ID.B.DATA DIVISION.WORKING-STORAGE SECTION.
1 A PIC XXXX/XX.
1 B PIC X(5).
1 C PIC X(21).
PROCEDURE DIVISION.ACCEPT A FROM DATE
ACCEPT C
MOVE WHEN-COMPILED TO B
IF A(3:5) = B OR "12/09" DISPLAY C.

Я нарушаю правила о знаменитостях, поэтому никаких бонусов нет ...

Полученный текст вводится пользователем (запрашивается при запуске). Если это не так, то строку, определяющую, Cнеобходимо удалить, как это делается ACCEPT Cи DISPLAY Cдолжно стать DISPLAY "HAPPY BIRTHDAY TO ME!"для дополнительных семи символов.

WHEN-COMPILEDэто специальный регистр, содержащий дату / время компиляции, который доступен для программы (всегда удобно, вы можете знать, что у вас есть правильная версия). Это усечено в, MOVEпотому что остальное не нужно.DATEтекущая дата - это yymmdd.

/ определении A указан символ редактирования вставки, поскольку дата компиляции содержит косую черту. Дополнительный персонаж, но облегчает сравнение.

Знаменитость = Грейс Хоппер

Билл Вуджер
источник
2

Пакет - 37 байт

Кража метода, используемого одним из ответов Bash ..

@echo.>>%0&echo Happy birthday to me!

Другой метод - 145 байт

@for /f "tokens=2,3 delims=/ " %%a in ("%date%")do @for /f "tokens=1,2 delims=/" %%c in ("%~t0")do @if %%a%%b==%%c%%d @echo Happy Birthday to me!
unclemeat
источник
1

Ruby, 69 символов / байт

puts'Happy birthday to me!'if(Time.new-File.atime($0))%31536000<86400

31536000количество секунд в году и 86400количество секунд в дне.

Дверная ручка
источник
4
К сожалению, работает правильно только максимум семь лет или около того, пока вы не столкнетесь с первым високосным годом после времени.
Амадан
Также говорится «с днем ​​рождения» утром после вашего дня рождения и не говорит «с днем ​​рождения» утром вашего дня рождения до вашего рождения.
AMADANON Inc.
1

JavaScript

Node.js, 156 байт

b=new Date(require("fs").statSync(__filename).mtime);d=new Date();b.getDate()==d.getDate()&&b.getMonth()==d.getMonth()&&console.log("Happy birthday to me!")

Использует время модификации файла.

Крис У.
источник
пока
опередил
Когда я запускаю ваш, я получаю ошибку во время выполнения, но подход на основе совпадений определенно намного умнее. Исправьте ошибку, и вы получите мой upvote. ;)
Крис У.
Можете ли вы процитировать ошибку и вашу ОС? Я думаю, это просто не кроссплатформенность.
стронций
1

Powershell - 105 байт

if('{0:M}'-f(gi $MyInvocation.MyCommand.Definition).creationtime-eq(date -f M)){'Happy birthday to me!'}

Ungolfed:

if('{0:M}' -f (gi $MyInvocation.MyCommand.Definition).creationtime -eq (date -f M)){
  'Happy birthday to me!'
}

Бонус не стоит, я могу получить только 117,5.

SpellingD
источник
1

Powershell - 127

if ((gci $MyInvocation.MyCommand.Path).lastwritetime.ToString("MMdd") -eq (get-date).ToString("MMdd")){"happy birthday to me!"}

Для бонуса 15% - 151 байт, минус 15% = 128,4

$r=@{"0308"="you";(gci $MyInvocation.MyCommand.Path).lastwritetime.ToString("MMdd")="me"}[(get-date).tostring("MMdd")]
if($r){"Happy birthday to $r!"}
Крис Дж
источник
1
Я не эксперт PowerShell, но это будет работать только в текущем году? Что, когда у «программы» день рождения 1, 2, 3 и т. Д.?
RobIII
Вы можете удалить writeкоманду - просто "happy birthday to me!"распечатайте ее.
unclemeat
Вы совершенно правы. Я должен знать это.
Крис Дж
@Robill - упс. Это то, что приходит, когда я что-то пишу, когда меня отвлекает что-то другое, и я использую Codegolf как промедление Исправлено (не то чтобы у него был шанс на победу, ум).
Крис Джей
1

Рубин - 80 103 87 байт

m=File.mtime $0
t=Time.now
puts"Happy birthday to me!"if t.month==m.month&&t.day==m.day

Рубин - 123 115 135 121 - 15% = 104,55 97,75 114,75 102,85 балла

t=Time.now
{me:File.mtime($0),you:Time.at(36e5)}.map{|n,d|puts"Happy birthday to #{n}!"if t.month==d.month&&t.day==d.day}

Может быть немного длиннее или короче в зависимости от того, где ваш день рождения выпадает на год, и самый короткий способ представить это. Для меня это 36e5(секунды с начала эпохи; зависит от часового пояса).


Мел Гибсон считается? Вот 138 байт - бонус 35% = 89,7-балльная программа, которая празднует себя, меня и Мел!

t=Time.now
{me:File.mtime($0),you:Time.at(36e5),Mel:Time.at(2e5)}.map{|n,d|puts"Happy birthday to #{n}!"if t.month==d.month&&t.day==d.day}
Тим С.
источник
1
Ваш код не выполняется в високосные годы, для дат после февраля.
Угорен
@ Югорен, верно. Исправил это, но потерял много очков :(
Тим С.
Но теперь я восстановил большинство из них! =)
Тим С.
0

PureBasic

Без бонуса - 142

If Bool(FormatDate("%dd%mm",Date())=FormatDate("%dd%mm",GetFileDate(ProgramFilename(),0)))
MessageRequester("","Happy birthday To me!")
EndIf

С бонусом - 218 - 15% = 185,3

Dim s$(2)
s$(1)="me"
s$(2)="you"
m$="%dd%mm"
d$=FormatDate(m$,Date())
i=Bool(d$=FormatDate(m$,GetFileDate(ProgramFilename(),0)))|(Bool(d$="2301")<<1)
If i=0:End:EndIf
MessageRequester("","Happy birthday To "+s$(i)+"!")
Fozzedout
источник
0

TI-BASIC, 68 байтов

If Ans=0:getDate→G:0:G=G:If getDate=G:Disp "HAPPY BIRTHDAY TO ME!"

Помните, что эти лексемы один байт: If , Ans, →, Disp. getDateэто два байта. Все остальные односимвольные символы - один байт.

Timtech
источник
1
Вы уверены, что это UTF-8?
Fozzedout
3
OP явно заявляет, что вы должны использовать UTF-8. Это 66 символов и 68 байтов.
nyuszika7h
2
Если вы хотите заявить, что это 46 байтов, напишите это в 46 байтах. Как и сейчас, это 68 байт.
Угорен
В соответствии с размерами токенов в стандартной среде TI-Basic это 55 байтов, но как обычный текст да его 68. Также технически не должно быть «в конце», чтобы можно было сохранить байт.
Lemon Drop
0

J 79

 echo((6!:0'')(('',:'Happy birthday to me!'){~])@:-:&(1 2&{)&:>])1{,1!:0{:4!:3''

Бонусная версия120 - 15% = 102

Получу ли я дополнительный кредит за то, что они также напечатали оба, когда у обоих день рождения?

echo((2 6$(6!:0 '') , 0 2 7)(' ','Happy birthday to ',"2 1]3 5$'you! me!  both!'){~#.@:(-:&(1 2&{)"1)&:>])1{,1!:0{:4!:3''

Пояснение (справа налево):

last =: {:4!:3''     NB. Take the last script run (i.e. the file itself)
time =: 1{,1!:0 last NB. the modification time is the second element in that file's listing

Центральный глагол поезда

unbox_both =: &:>      NB. unboxes left and right argument
match  =: -:&(1 2&{)"1 NB. for each date given, left and right, compare them
to_int =: #.           NB. convert boolean to int
from   =: {~           NB. from the left array, take element right.

NB. H contains messages an empty row, appended to all combinations of messages. 
H =: (' ','Happy birthday to ',"2 1]3 5$'you! me!  both!')

V =: (H from to_int)@:match unbox_both NB. after unboxing and comparing, 
                                       NB. select the according message

Левый зубец для центрального поезда:

dates=: (2 6$(6!:0 '') , 0 2 7) NB. the current date, and the relevant fields of my birthday.

NB. Combining the bricks:
echo (dates V ]) time           NB. output the monads result on time.
jpjacobs
источник
0

Ява - 196

Это отличается от других представлений Java с использованием строк, сокращая 41 символ в процессе. Он использует String.format ("% tj") для форматирования строки java.util.Date или строки года, а затем сравнивает эти две строки.

class Z{public static void main(String[]y){if("".format("%tj",new java.util.Date()).equals("".format("%tj",new java.io.File("Z.class").lastModified())))System.out.print("Happy birthday to me!");}}

отформатирован:

class Z
{
    public static void main(String[] y)
    {
        if ("".format("%tj", new java.util.Date()).equals("".format("%tj", new java.io.File("Z.class").lastModified())))
            System.out.print("Happy birthday to me!");
    }
}
timxyz
источник
1
День года плохо работает с високосными годами.
Угорен
@ Югорен Я согласен. Тем не менее, так как конкурс в настоящее время запущен, и мы на 20 февраля. данные компиляции должны быть исправны в течение нескольких дней и не вызывать проблем в последующие годы. При компиляции после 28 февраля действительно будет (будущая) проблема.
RobIII
Если бы я компилировал после 28 февраля, я мог бы изменить формат строки на «% tm% td» при стоимости в шесть пунктов
timxyz
0

C # 191 без бонуса

using s=System;class P{static void Main(){if(s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd")==s.DateTime.Now.ToString("Mdd"))s.Console.Write("Happy birthday to me!");}}

отформатирован:

using s = System;
class P
{
    static void Main()
    {
        if (s.IO.File.GetCreationTime(typeof(P).Assembly.Location).ToString("Mdd") == s.DateTime.Now.ToString("Mdd"))
            s.Console.Write("Happy birthday to me!");
    }
}
Alberto
источник
Вы используете х только дважды; var x="MMdd";+ ToString ( x) + ToString ( x) = 15, тогда как ToString ( "MMdd"); + ToString ( "MMdd"); только стоит 12.
RobIII
Кроме того, новая строка не требуется, поэтому WriteLine()можно сократить до Write(). С учетом вышеизложенного и этого изменения у вас будет то же решение, что и у меня ;-)
RobIII
1
Вы должны обновить счет тоже, который сейчас 193. И вы можете довести его до 191, сбрив две
буквы
0

JavaScript (node.js) - 100 байт

(require('fs').fstatSync(4).mtime+1).match(Date().substr(4,6))&&console.log('Happy birthday to me!')
стронций
источник
0

vb.net ~ 161c

Это напечатает сообщение о праздновании для всех, чей день рождения это.

Module M
Sub Main
For Each b In{({"1705","Alan"}),({"2012","You"}),({FileDateTime(Process.GetCurrentProcess.MainModule.FileName).ToString("ddMM"),"Me"})}
If b(0)=Now.ToString("ddMM") Then Console.WriteLine("Happy Birthday To {0}!",b(1))
Next
End Sub
End Module

Алан => Алан Кэй

Счет: 253c (минус -33c vb.net) = 220 - 15% (бонус на мой день рождения) = 187c - 14% (день рождения знаменитости) = 160,82 ~ 161c или 220c - 29% = 156,2 ~ 157c

Адам Спейт
источник
Вы можете получить бонус на свой день рождения или знаменитости. Не оба.
Угорен
@ugoren Scoring не утверждает, что это эксклюзив или, поэтому я использую логическое значение или.
Адам Спейт
0

Powershell, 82 байта

см. также ответы от Chris J и SpellingD

"Happy birthday to me!"|?{(gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r)-eq(date|% D*r)}

где

gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r

это комбинации ярлыков и псевдонимов для выражения:

Get-Valiable MyInvocation -value|% MyCommand|% Path|Get-ChildItem|% LastWritetime|% DayOfYear

что эквивалентно канонической форме:

(Get-ChildItem $MyInvocation.MyCommand.Path).LastWritetime.DayOfYear

Powershell, 119 байт - 14% = 102,34 балла

filter e{$_-eq(date|% D*r)}$('me'|?{gv My* -v|% M*|% p*h|gci|% l*w*e|% D*r|e}
'Prof'|?{3|e})|%{"Happy birthday to $_!"}

На 3 января скрипт отобразится Happy birthday to Prof!. Если этот скрипт будет сохранен 3 января, будут отображены два приветствия.

Mazzy
источник
-1

C # - 63 байта

class P
{
    static void Main()
    {
          Console.Write("Happy birthday to me!"));
    }
}

Я выбираю время компиляции . Поскольку код C # компилируется в MSIL, который во время выполнения компилируется в исполняемый код компилятором JIT , эта программа удовлетворяет условиям.

РЕДАКТИРОВАТЬ - Возможно, неверный ответ, как указано в комментариях.

rahulroy9202
источник
1
Старый трюк, больше не действителен. Правило 2 гласит: «Запрещается каким-либо образом вызывать или запускать программу».
Угорен
обновляется соответственно. Спасибо @ugoren
rahulroy9202
@ugoren В коде PERL Фила Х также используется тот же прием. Проверьте ответ с наибольшим количеством голосов.
rahulroy9202
2
Это также неверный ответ. Но - он был первым, кто использовал этот трюк, и в то время, когда он делал это, правила позволяли это.
Угорен