1. C# / Говнокод #28425

    0

    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
    14. 14
    15. 15
    16. 16
    public class Solution 
    {
        public string RemoveStars(string s) 
        {
            char[] str = new char[s.Length];
            int l = 0;
            
            for(int i = 0; i < s.Length; ++i)
                if(s[i] == '*')
                    --l;
                else
                    str[l++] = s[i];
            
            return new string(str, 0, l);
        }
    }

    решил выйти из выгорания изучением новой технологии. литкод оказался прикольной штукой..

    Запостил: kcalbCube, 23 Октября 2022

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

    • Runtime: 135 ms, faster than 87.74% of C# online submissions for Removing Stars From a String.
      Memory Usage: 40.8 MB, less than 92.45% of C# online submissions for Removing Stars From a String.

      Как ускорить?
      Ответить
      • Использование foreach дало
        Runtime: 122 ms, faster than 93.40% of C# online submissions for Removing Stars From a String.
        Memory Usage: 40.4 MB, less than 99.06% of C# online submissions for Removing Stars From a String.

        Больше и идей нет.
        Ответить
        • Вот был бы я на C++...
          Ответить
          • да уж как минимум ты мог бы массив в стек положить
            нахуя в куче он?
            Ответить
            • А как в си шарпе это сделать?
              Ответить
              • никак

                через ансейф рази чо
                Ответить
                • ансейф отключён у них
                  Ответить
                • вы на какую-то старую версию опираетесь

                  https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/stackalloc
                  Ответить
                  • что будет, если я сохраню референс на stackalloc массив?
                    Ответить
                    • ты не сохранишь, тебе компилятор не даст
                      Ответить
                      • тоесть от стекговна нельзя взять реферес? а передать то можно по указателю в функцию? или он скопируетс?
                        Ответить
                      • Я подсмотрел ответ

                        stackallocчить без ансейф контекста можно ТОЛЬКО массивы, и работать с ними только через Span и ReadOnlySpan (долбоебы не могут в конст)

                        У спанов таике ограничения
                        "ref struct" (и эти люди ржут над glvalue) so
                        that they can't be boxed, they can't be assigned to variables of type Object, dynamic or to any interface type, they can't be fields in a reference type, and they can't be used across await and yield boundaries. In addition, calls to two methods, Equals(Object) and GetHashCode, throw a NotSupportedException.

                        То есть с ними нельзя делать примерно ничего, да еще и Варвару Лискову обидели

                        То есть это такой воюний костыль из говна и палочек по мерзости схожий с IDisposable.
                        Ответить
                        • ебать, тебя спан в детстве что ли обидел
                          Ответить
              • как видишь -- очень даже как
                Ответить
            • А жид компилятор сам не догадывается положить его на стек?
              Ответить
              • Догадается, но сколько к тому моменту пройдет интерактивного времени?

                Нужен хотя бы escape analysis (как в го) а еще лучше нормальное управление мапятью
                Ответить
            • а как бы это принципиально ускорило?
              Ответить
        • > faster than 93.40%
          > less than 99.06%

          Какие же там ротоёбы сидят...
          Ответить
          • Не факт. Может они компы обновили, а ротоёбы отправляли свой код в 2005 году.
            Ответить
            • Там ещё, видимо, от нагрузки на сервер зависит. У меня ког-дато одно и тоже решение с разным временем отрабатывало.
              Ответить
      • simd, модификацией исходной строки без аллокации новой через unsafe
        Ответить
        • Нельзя inplace.
          Был такой кста вариант, но при переёбке в string все benefits теряются
          public class Solution 
          {
              public string RemoveStars(string s) 
              {
                  Span<char> str = stackalloc char[s.Length];
                  int l = 0;
                  
                  foreach(var c in s)
                      if(c == '*')
                          --l;
                      else
                          str[l++] = c;
                  
                  return str.ToString().Substring(0, l);
              }
          }
          Ответить
          • > .ToString().Substring
            А чо, от Span нельзя за O(1) взять под-спан (один индекс поменять) и не коньструировать лишнюю строку?
            Ответить
            • return str.Slice(0, l).ToString();

              Починил.
              Ответить
              • а он скопирует или сделает реальный вью?
                Ответить
                • span сам по сабе - вью. Слайсы просто возвращают более узкие вью. А вот ToString сделает полноценную строку в куче, как требует возвращаемое значение.
                  Ответить
                  • &gt;span сам по сабе - вью.
                    Спасибо, я догадался. Было бы очент страанно, если бы он копировать нижележащий массив.

                    Мой вопрос был про строку. Если чары туда копируются, то это уже не (1), а (N) же, правда не длина всей строчки, а лишь (0, l)

                    Теоретически, строка могла бы содержать два указателя на куски слайса, но видимо она так не делает
                    Да и слайс у нас со стекового значения (пришлось бы тогда перекладывать его в кучу, видимо)
                    Да, проще скопировать
                    Ответить
              • Медленнее и по памяти хуже. Скорее всего шарпы не оч оптимизированы для стекоёбства.
                Ответить
          • &gt;stackalloc

            ну вот, уже и в C#

            лет через двадцать и в джву завезут

            а пока нельзя. Всё таки понятия стека и кучи -- сложные, большинство джава программистов с ними пока не знакомо...
            Ответить
    • А у стринга что ли нет нативного метода?
      Ответить
    • > --l
      Ват?
      А точно код рабочий? Какая задача?
      Ответить
    • я читаю ваш бред и продеваю веревку скрозь уши
      Ответить
    • Чувак накреативил названий своему freeware как не в себя. А я чуть его поделку не удалил, потому что в Version Info какая-то хуита.

      Doro - Free PDF Printer
          Lacey - Free Music & Video Downloader
          Spencer - Start Menu for Windows 10
          Howard - Email Notifier
          Conroe - Calendar Notifier
          Redwood - Extract Resources
          York - Network Traffic Trace
          Seaside - Start multiple Skype sessions
          Malden - See users Skype status
          Skype Focus Fix
          Flash Builder/Flash Player
          Compton - Storage Device Info
          Temple - USB Device Info
          USB ID Database
          Trion - Serial Port Terminal
          Grand - Sensors Viewer
          Homedale - WLAN Monitor
          Bennett - Bluetooth Monitor
          Bedford - Bluetooth Smart Info
          PortScan
          Carroll - Resolution Per User
          SpyEx - Windows Messages
          Parkdale - SpeedTest
          Rimhill - Limit CD-ROM Speed
          CDInfo
          Richmond - NFC/RFID Reader
          Auburn - Earnings Notifier
          Medford - Modbus Viewer
          Banks - BACnet Viewer
          Sherwood - Simple SCADA
          Bear - GDI/User Usage
          Prey Helper
          Samsung EI-AN900 Viewer
          Yale - Network Usage
          Norwood - CPU Usage Graph
          Nassau - Network Info
          Royal - RSS Reader
          Newfield - News
          CPU Grab Ex
          KMZ/KML/GPX/TCX Track Viewer
          Pictures on Map
          VBB Info
          Corona Virus Disease Map
          Monkeypox Outbreak Map
          VisualCVS
          mod_auth_msfix
          RequestTrace - Trace IRP’s
          NetChat
          Quartz - Dialin & DynDns
          CheckSum - PE Header
          PE Header Patcher
          PM_SZ_OS
          SZ_OS
          Hunter
      Ответить

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