Size: a a a

2020 June 19

DE

Denis Efremov in pro.js
А как её ивалом?
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
А как её ивалом?
нет, преобразовать в начале строку в число, и работать уже с числами
источник

L

Lupusregina[beta] in pro.js
Lupusregina[beta]
function binarySimulation(s, q) {
 const a = new Int32Array((s.length >> 5) + 1)
 for(let i = 0, k = 0; i < s.length; ) {
   let i32 = 0
   for(let j = 0; j < 32; j++) {
     i32 |= ( s[i++]|0 ) << j
   }
   a[k++] = i32
 }
 
 const r = []
 for(const v of q) {
   switch(v[0]) {
     case "I":
       const start = v[1] - 1, end = v[2] - 1
       let j = start;
       const startFl = Math.min( end, ((start >> 5) + 1) << 5 )
       
       //const mask = ( (1 << (startFl - j)) - 1 ) << (j & 31)
       //a[j >> 5] ^= mask
       
       while( j < startFl ) {
         const byte = j >> 5
         const bit = j & 31
         const val = 1 << bit
         //if ( !bit )
         //  break
         a[byte] ^= val
         
         j++
       }
       
       const endFl = (end >> 5) << 5
       
       
       /// ~250
       if ( j < endFl ) {
         for(let i = j >> 5; i < end >> 5; i++)
           a[i] ^= -1
         j = endFl
       }
       
       /*
       /// ~115
       while( j < endFl ) {
         const byte = j >> 5
         a[byte] ^= -1
         j += 32
       }
       */

       for(; j <= end; j++) {
         const byte = j >> 5
         const bit = j & 31
         const val = 1 << bit
         a[byte] ^= val
       }
       break
     
     case "Q":
       const i = v[1] - 1
       const byte = i >> 5
       const bit = i & 31
       r.push( '' + ( (a[byte] >> bit) & 1) )
   }
 }
 return r
}
вот мой вариант, где использование ксора оправдано
источник

L

Lupusregina[beta] in pro.js
однако даже его, не хватает для прохождения каты. Надо использовать другой алгоритм
источник

DE

Denis Efremov in pro.js
Lupusregina[beta]
однако даже его, не хватает для прохождения каты. Надо использовать другой алгоритм
Что такое >> 5?? В смысле я знаю что это. Зачем ты так делаешь?
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
Что такое >> 5?? В смысле я знаю что это. Зачем ты так делаешь?
что бы поделить на 32
источник

DE

Denis Efremov in pro.js
Ааа
источник

DE

Denis Efremov in pro.js
Логично
источник

DE

Denis Efremov in pro.js
Вроде же 31 надо
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
Вроде же 31 надо
нет
источник

L

Lupusregina[beta] in pro.js
& 31 используется для получения остатка от деления на 32
источник

DE

Denis Efremov in pro.js
источник

DE

Denis Efremov in pro.js
Lupusregina[beta]
нет, преобразовать в начале строку в число, и работать уже с числами
А как ты хочешь пройти big random tests с одними числами?
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
А как ты хочешь пройти big random tests с одними числами?
а как он может помешать
источник

DE

Denis Efremov in pro.js
Ну не даст сделать такое число
источник

DE

Denis Efremov in pro.js
Lupusregina[beta]
а как он может помешать
У меня для тебя есть интересная задачка
источник

DE

Denis Efremov in pro.js
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
Ну не даст сделать такое число
function binarySimulation(s, q) {
 const array = s.split("").map(Number)
 const result = []

 const map = {
   I(start, end) {
     for(let i = start - 1; i < end; i++)
       array[i] ^= 1
   },
   Q(index) {
     result.push(array[index - 1] + "")
   }
 }
 
 for(const [mode, ...args] of q)
   map[mode](...args)
 
 return result
}
источник

DE

Denis Efremov in pro.js
Lupusregina[beta]
function binarySimulation(s, q) {
 const array = s.split("").map(Number)
 const result = []

 const map = {
   I(start, end) {
     for(let i = start - 1; i < end; i++)
       array[i] ^= 1
   },
   Q(index) {
     result.push(array[index - 1] + "")
   }
 }
 
 for(const [mode, ...args] of q)
   map[mode](...args)
 
 return result
}
Прошел тест?
источник

L

Lupusregina[beta] in pro.js
Denis Efremov
Прошел тест?
по времени нет
источник