1. C++ / Говнокод #24802

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    #include <map>
    #include <stdio.h>
    #include <vector>
    using namespace std;
     
    int main() {
       map<string, int> karta;
       for (auto pituh : vector<string> {"foo", "bar", "foo"}) {
        	karta[pituh]++;
       }
       printf("foo: %d\nbar: %d\n", karta["foo"], karta["bar"]);
       return 0;
    }

    <?php

    $karta = [];
    foreach (["foo", "bar", "foo"] as $pituh) {
    if (!isset($karta[$pituh])) {
    $karta[$pituh] = 0;
    }
    $karta[$pituh]++;
    }
    echo "foo: {$karta['foo']}\nbar: {$karta['bar']}\n";


    Поэтому за что я?

    Запостил: guestinxo, 24 Сентября 2018

    Комментарии (22) RSS

    • И в чем проблема? Как инициализируется элемент при создании? Так int() - это 0.
      Ответить
      • Проблема в "PHP", где нужно инициализировать вручную.
        Ответить
    • Гиест, нафейхоа тебе вектор из стрингов? std::initializer_list наше всьо!
      std::map<std::string, int> karta;
      for (const auto pituh : {"foo", "bar", "foo"})
        karta[pituh]++;


      https://wandbox.org/permlink/Tb7a3Odz3tqa0rgV
      Ответить
    • > <stdio.h>

      Фи, настоящие крестолюбы используют <cstdio>.
      Ответить
    • Питония!
      from collections import defaultdict
      
      karta = defaultdict(lambda: 0)
      
      for pituh in ("foo", "bar", "foo"):
          karta[pituh] += 1
      
      print("foo: %s\nbar: %s" % (karta["foo"], karta["bar"]))
      Ответить
      • Питониевый O(n^2):
        goroda = ("foo", "bar", "foo")
        karta = dict([(x, goroda.count(x)) for x in set(goroda)])
        print("foo: %s\nbar: %s" % (karta["foo"], karta["bar"]))
        Ответить
      • from collections import Counter
        
        karta = Counter()
        
        for pituh in ("foo", "bar", "foo"):
            karta[pituh] += 1
        
        print(karta)


        https://ideone.com/OPPROm
        Ответить
        • И в итоге в олимпиаде побеждает Питон:
          from collections import Counter
          print(Counter(('foo', 'bar', 'foo')))

          https://ideone.com/LQsoSw
          Ответить
          • Ну это очевидно было. Правда, по хорошему нужно добавить шебанг и

            def main():
                ...
            if __name__=="__main__":
                main()
            Ответить
    • На луа переведите.
      Ответить
      • Держи, Хуй:
        karta = setmetatable({}, {__index = function(x) return 0; end})
        
        for k, i in pairs({"foo", "bar", "foo"}) do
            karta[i] = karta[i] + 1
        end
        
        print(("foo: %s\nbar: %s"):format(karta["foo"], karta["bar"]))
        Ответить
        • Спасибо, Хуй.
          Ответить
          • Пожалуйста, Хуй!

            ЗЫ. Хуй, расскажи молодому и неопытному Хую, можно ли этот цикл переписать как-нибудь по-другому?
            Ответить
            • Можно более забавнее, например метаметод паирс вроде бы в lua 5.3 или 5.2 завезли, или через call как то такой метаметод, но не думаю короче.
              Посплю, попробую уделить этому время, Хуй.
              Ответить
    • Слишком процедурно и несовременно. Надо так: https://wandbox.org/permlink/Kr2SqCQCNfsthfZw
      Ответить
    • import qualified Data.Map as M
      import Text.Printf
      
      mapM_ (uncurry $ printf "%s → %d\n") $ M.toList $ M.fromListWith (+) $ zip ["foo", "baz", "foo"] [1,1..]
      
      -- baz → 1
      -- foo → 2
      Ответить
    • Э-эээммм...
      Ответить
      • ?
        Ответить
        • он просит перевести я ызка программирования на понятный ему "PHP"
          Ответить
          • Так в посте же есть перевод.
            Ответить
            • Всё, вопрос снят (по привычке всегда пропускаю описания к кодам).
              Ответить

    Добавить комментарий