import time
def know_range(n):
half = n // 2
if n == 1:
print("1", end=" ")
return
[print(x, end=" ") for x in range(1, half+1)]
if n & 1: # если нечетный
print(half+1, end=" ")
[print(x, end=" ") for x in range(half, 0, -1)]
return
def file_read_to_byte_discrete(f_path):
res_arr = 0b0
len_arr = 0b0
n = 0
with open(f_path) as f:
n = int(f.readline()) + 1
len_arr = 0b1 << n
buf = ""
i = " "
while i != "":
i = f.read(1)
if i != " " and i != "":
buf+= i
else:
if buf == "":
break
if int(buf) | 0:
res_arr = res_arr | 1
else:
res_arr = res_arr | 0
res_arr = res_arr << 1
buf = ""
f.close()
res_arr = len_arr + res_arr
res_arr = res_arr >> 1
return res_arr
byte_arr = file_read_to_byte_discrete('input.txt')
n = len(bin(byte_arr)) - 3
number = 0
# проверим левый край если там не ноль
left_null = 0
if ((byte_arr >> n-1) & 1):
number = 0
for i in range(n-1, -1, -1):
if not ((byte_arr >> i) & 1): # если найдем нолик выходим
if number != 0:
left_null = number
else:
left_null = 1
break
else:
number += 1
if number != 0:
for i in range(number, 0, -1):
print(i, end=" ")
number = 0
for i in range(n-1-left_null, -1, -1):
if not ((byte_arr >> i) & 1):
# найден нолик
if number != 0:
know_range(number)
print("0", end=" ")
number = 0
else:
number += 1
# проверим правый край если там не ноль просто печатаем номера
if (byte_arr & 1):
[print(x, end=" ") for x in range(1, number+1)]
board *lB = &leaderboard; //передаем адрес глобального массива в указатель lB
lieB = (board*)realloc(a, newsize *sizeof(board));
if (lieB)
lB = LieB; //если честно я сам не до конца понял для чего создают другой указатель, можно было бы и наверное в старый
else error();
free(lieB); //как я понял уничтожаем именно сам временный указатель, а не то, на что он указывает. Ведь он оказывает туда же
// куда и lB, где хранится наша новая расширенная структура.
char input[] = "блабалалаллала";
char *in = input;
char output[MAX_SIZE];
char *out = output;\
а функцию сделать:
void BlaBlaSort(const char *in, char *out)
{
//берем из *in и пихаем в *out
}