<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FizzBuzz on kenji.blog</title><link>http://kenji.blog/ru/tags/fizzbuzz/</link><description>Recent content in FizzBuzz on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 18 Apr 2025 00:58:11 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/tags/fizzbuzz/index.xml" rel="self" type="application/rss+xml"/><item><title>FizzBuzz</title><link>http://kenji.blog/ru/p/fizzbuzz/</link><pubDate>Fri, 18 Apr 2025 00:58:11 +0900</pubDate><guid>http://kenji.blog/ru/p/fizzbuzz/</guid><description>&lt;img src="http://kenji.blog/p/fizzbuzz/img.png" alt="Featured image of post FizzBuzz" />&lt;h2 id="что-же-такое-fizzbuzz-в-конце-концов">Что же такое FizzBuzz в конце концов?
&lt;/h2>&lt;p>Всем привет!&lt;/p>
&lt;p>Сегодня я хотел бы написать о &amp;ldquo;FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>И те, кто скажет: &amp;ldquo;А, я знаю это!&amp;rdquo;, и те, кто подумает: &amp;ldquo;Вроде слышал, но не совсем понимаю&amp;rdquo;, пожалуйста, останьтесь со мной ненадолго. Это займет всего пару минут, и, возможно, вы скажете &amp;ldquo;Ага, понятно&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="действительно-ли-вы-не-программист-если-не-можете-написать-fizzbuzz">Действительно ли &amp;ldquo;Вы не программист, если не можете написать FizzBuzz&amp;rdquo;?
&lt;/h3>&lt;p>В общих чертах, FizzBuzz выглядит вот так.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">15&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;FizzBuzz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Fizz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">elif&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Buzz&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Да, это та самая знаменитая &amp;ldquo;проблема FizzBuzz&amp;rdquo;.&lt;/p>
&lt;p>Вы перебираете числа от 1 до 100 по порядку,&lt;br>
если число кратно 3, выводите &amp;ldquo;Fizz&amp;rdquo;, если кратно 5, выводите &amp;ldquo;Buzz&amp;rdquo;,&lt;br>
а если кратно обоим, выводите &amp;ldquo;FizzBuzz&amp;rdquo;. Всё очень просто.&lt;/p>
&lt;p>И тем не менее, по какой-то причине, к этому часто относятся как к &amp;ldquo;минимальному тесту для программистов&amp;rdquo;. Эту задачу дают на собеседованиях, а в соцсетях то и дело встречаются высокомерные комментарии вроде &amp;ldquo;Те, кто даже FizzBuzz написать не может&amp;hellip;&amp;rdquo;.&lt;/p>
&lt;p>Но подождите минутку.&lt;/p>
&lt;p>Действительно ли можно утверждать, что &amp;ldquo;не можешь написать FizzBuzz = не умеешь программировать&amp;rdquo;?&lt;/p>
&lt;hr>
&lt;h3 id="дело-не-в-том-можете-ли-вы-это-сделать-а-в-том-находитесь-ли-вы-в-состоянии-это-сделать">Дело не в том, можете ли вы это сделать, а в том, находитесь ли вы в &amp;ldquo;состоянии&amp;rdquo; это сделать
&lt;/h3>&lt;p>Конечно, для решения FizzBuzz требуется понимание синтаксиса и базовое логическое мышление. Поэтому вполне логично использовать его для &amp;ldquo;проверки основ&amp;rdquo;.&lt;/p>
&lt;p>Но послушайте.&lt;/p>
&lt;p>В разных условиях результаты будут разными.&lt;/p>
&lt;p>Например,&lt;/p>
&lt;ul>
&lt;li>Когда вы нервничаете перед интервьюером, которого видите впервые&lt;/li>
&lt;li>Когда вам внезапно дают маркер и доску, а под рукой нет редактора кода&lt;/li>
&lt;li>Когда вы вдруг не можете вспомнить: &amp;ldquo;Подождите, а как работает оператор остатка от деления (modulo)?&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>&amp;hellip; Разве такого не бывает? Мы же люди, в конце концов. Я думаю, такое случается.&lt;/p>
&lt;p>Поэтому, вместо того чтобы спрашивать &amp;ldquo;можете ли вы написать FizzBuzz&amp;rdquo;, я считаю, что гораздо важнее &amp;ldquo;можете ли вы привести себя в состояние, в котором сможете написать FizzBuzz&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="ловушка-популярного-совета-просто-тренируйтесь-и-всё-будет-хорошо">Ловушка популярного совета &amp;ldquo;Просто тренируйтесь, и всё будет хорошо&amp;rdquo;
&lt;/h3>&lt;p>Когда заходит речь об этом, часто звучит совет &amp;ldquo;Так тренируйтесь каждый день!&amp;rdquo;.&lt;/p>
&lt;p>Действительно, благодаря регулярным тренировкам вы сможете писать код быстро и без запинок, и само по себе это хорошо. Но если исходить из предпосылки &amp;ldquo;если не можешь написать FizzBuzz, ты профнепригоден&amp;rdquo;, это может превратиться в обычный страх.&lt;/p>
&lt;p>Другими словами, легко попасть в ловушку мышления, где вы чувствуете: &amp;ldquo;Я ошибся = я ни на что не годен&amp;rdquo;.&lt;/p>
&lt;p>Например, когда вы просыпаете утром, разве вы не склонны думать: &amp;ldquo;Я такой ленивый&amp;hellip;&amp;rdquo;? Но возможно, ваше тело просто сильно устало.&lt;/p>
&lt;p>То же самое и с FizzBuzz.&lt;/p>
&lt;hr>
&lt;h3 id="и-всё-же-fizzbuzz--это-действительно-хороший-вопрос">И всё же, FizzBuzz — это действительно хороший вопрос
&lt;/h3>&lt;p>Не поймите меня неправильно, в самой задаче FizzBuzz нет ничего плохого.&lt;/p>
&lt;p>Наоборот, я считаю, что это очень хорошо продуманный вопрос. Правила просты, и их легко расширить. Например, если вы немного измените подход, это заставит вас мыслить глубже.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">101&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Fizz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">5&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">+=&lt;/span> &lt;span class="s2">&amp;#34;Buzz&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Это пример того, как &amp;ldquo;можно написать без if-elif-else&amp;rdquo;. Выглядит немного элегантнее, не так ли?&lt;/p>
&lt;p>Другими словами, FizzBuzz — это не только про то, &amp;ldquo;смогли ли вы это сделать&amp;rdquo;, но и отличная отправная точка для понимания того, &amp;ldquo;как вы пишете&amp;rdquo; и &amp;ldquo;насколько глубоко вы понимаете процесс&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h3 id="в-заключение">В заключение
&lt;/h3>&lt;p>Я думаю, нам не стоит придавать слишком большое значение тому, может ли человек написать FizzBuzz.&lt;/p>
&lt;p>Даже если у вас не получилось его написать, это может просто означать, что &amp;ldquo;именно в этот момент вы были не в форме&amp;rdquo;, и часто, если вы спокойно подумаете об этом позже, у вас всё получится.&lt;/p>
&lt;p>Не торопитесь, давайте двигаться шаг за шагом.&lt;/p>
&lt;p>Код пишут люди. А поскольку мы люди, мы иногда что-то забываем и иногда нервничаем. Я считаю, что вполне достаточно принимать это и понемногу двигаться вперёд.&lt;/p>
&lt;p>Итак, давайте расслабимся и напишем сегодня немного кода.&lt;/p></description></item></channel></rss>