Технологии Чайника
41 subscribers
288 photos
15 videos
175 files
69 links
Отчаянные технологии...

> https://t.me/teaspot500
Download Telegram
Начал создавать крестики-нолики и понял, что слишком сонный
Планирую проверять является ли число числом от 1 до 9 и при этом свободным
После этого в таблице выводимой цифра меняется на X или O, а в созданном списке добавляется число и после сравнивается весь список с массивом WINS, чтобы при наличии той же комбинации была победа одной из команд
from random import randint
turn = bool(randint(0, 1))

CELLS = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

WINS = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 4, 7],
[2, 5, 8],
[3, 6, 9],
[1, 5, 9],
[3, 5, 7]
]

while True:
print("\n")
show = ""
for i in CELLS:
for n in range(3):
show += str(i[n])+" "
print(show)
show = ""

if turn:
input("Куда поставить крест: ")
turn = False
else:
input("Куда поставить ноль: ")
turn = True
Продолжение изучения сокращения масштаба кода приводят не только к моржам, но и к возможности в одну строчку проверять чётность числа:
print("Нечётно" if int(input())%2 else "Чётно")
Пора пояснить за используемые мной сокращения, которые позволяют выполнять "сложные" задачи в одну строчку... Вот вам пример кода, который я назвал бы мусорным:
num1 = 5
num2 = 7
sum = num1 + num2
print(sum)

Даже не используя мои методы, вроде моржа, можно сразу считать значение в принте, не создавая лишние переменные, которые не будут использоваться:
num1 = 5
num2 = 7
print(num1 + num2)

Здесь задано условие, что используются переменные ранее, иначе в этом бы вновь не было смысла, можно было бы просто в принте написать сразу 12.. Но что, если они задаются, условно инпутом и будут использоваться далее? Тут поможет морж, позволяющий задать и использовать переменную одновременно:
print((num1:=int(input()))+(num2:=int(input())))

Получаем код в одну строку, при этом использовать переменные мы сможем в дальнейшем

Теперь я бы хотел рассмотреть длинные условия, которые можно писать в одну строчку:
if True:
print("Hello World!")
else:
print("Goodbye!")

Здесь сразу видно, что можно сократить и писать без табуляции
if True: print("Hello World!")
else: print("Goodbye!")

Однако я бы использовал иную функцию, а именно условие в принте:
print("Hello World!" if True else "Goodbye!")

...
Этим простым кодом я хочу показать бессмысленность написания str(input()) в коде:
print(type(input()))
# Попробуйте ввести числа
Мне не нравится, что люди воспринимают нейросети не как мощный инструмент в помощи созданием кода, а как способ получить готовое решение, даже не пытаясь понять как оно работает

Я редко использую нейросети и использую в коде только с целью узнать что-то новое или вспомнить, однако замечаю использование нейросетей другими людьми как средство написание всего кода, от чего код выглядит странно, мусорно, парой не работая и при этом сам человек не способен объяснить принцип работы своего же кода, ведь он в нём и не разбирается

Если говорить на тему замены программистов нейросетями, то тут так же нет, ведь улучшение самих нейросетей будет требовать имение программиста на месте
❤‍🔥2
Мне нравится ассистент в роблокс студио, потому что он как раз и является инструментом, который активно помогает в разработке и исправляет ошибки при открытом скрипте, сильно мне помогая ИЗУЧАТЬ lua, вместо того, чтобы просто давать готовый ответ
Команды Brainfuck
1. > — переместить указатель данных на одну ячейку вправо.
2. < — переместить указатель данных на одну ячейку влево.
3. + — увеличить значение в текущей ячейке на 1.
4. - — уменьшить значение в текущей ячейке на 1.
5. . — вывести значение текущей ячейки как символ.
6. , — ввести символ и сохранить его значение в текущей ячейке.
7. [ — если значение текущей ячейки равно 0, перейти вперёд по тексту программы до соответствующей команды ].
8. ] — если значение текущей ячейки не равно 0, вернуться назад по тексту программы до соответствующей команды [.
+[>,.]

Код выводит всё, что ввёл пользователь
+[.+]

Выводит все символы
+++++[>,.<-]

Выводит столько символов, сколько плюсов перед циклом
Не знаю откуда это у меня взялось, но...
;>;[-<+>]<:

Значитс.. есть в брейнфак ещё символы:
1. : — читает из ячейки памяти число, не переводя его в символ ASCII
2. ; — аналогично первому, только записывает число без перевода
3. # — добавляет в стак значение
4. $ — убирает из стака значение

С последними двумя не особо разобрался, но как я понял - это удобная вещь, в том плане, что это переменная, к которой можно обращаться из любой ячейки памяти
;+[->,.<]

Хотел написать этот код раньше, но использовал , вместо ;
В общем.. Вы пишите цифру, которая обозначает сколько вы хотите считать символов, после чего пишите слово и сколько цифр вы вписали, столько и выведет букв слова
;#>$<[->+<]>:

Сделал код, умножающий число на два
Я сошёл с ума и под вдохновением от brainfuck создал... Brainfun!
from random import randint

MemoryStep = 0 # Выбранная ячейка памяти от 0 до 31
Memory = [] # Ячейки памяти
for i in range(32):
Memory.append(0)

CodeStep = 0 # Какой символ сейчас компилируется
Code = list(input("Вставьте код:\n\n"))
print("\n")

try:
while True:

if Code[CodeStep] == ">":
MemoryStep += 1
if MemoryStep > 31:
MemoryStep = 0

elif Code[CodeStep] == "<":
MemoryStep -= 1
if MemoryStep < 0:
MemoryStep = 31

elif Code[CodeStep] == ".":
print(Memory[MemoryStep])

elif Code[CodeStep] == "+":
Memory[MemoryStep] += 1
if Memory[MemoryStep] > 255:
Memory[MemoryStep] = 0

elif Code[CodeStep] == "-":
Memory[MemoryStep] -= 1
if Memory[MemoryStep] < 0:
Memory[MemoryStep] = 255

elif Code[CodeStep] == ",":
Memory[MemoryStep] = int(input(f"[(,){CodeStep};(S){MemoryStep}]: "))
if Memory[MemoryStep] < 0:
Memory[MemoryStep] = 0
elif Memory[MemoryStep] > 255:
Memory[MemoryStep] = 255

CodeStep += 1

except IndexError:
pass

OutMemory = ""
for i in Memory:
OutMemory += str(f"{i} ")
print(OutMemory)
Технологии Чайника
Я сошёл с ума и под вдохновением от brainfuck создал... Brainfun! from random import randint MemoryStep = 0 # Выбранная ячейка памяти от 0 до 31 Memory = [] # Ячейки памяти for i in range(32): Memory.append(0) CodeStep = 0 # Какой символ сейчас компилируется…
В будущем я буду дополнять этот файл новыми командами, так как это позволяет код... А вообще я удивлён тому, как мой мозг может оперировать данными дома, в то время как когда мне это необходимо, то я думать не могу чисто физически

Здесь пока что нет циклов или чего-то ещё, но это не сложно исправить теперь

Возможно я указал не всё:
MemoryStep - указывает на то, какая "ячейка памяти" сейчас выбрана
Memory - это в общем все "ячейки памяти", от чего следует, что Memory[MemoryStep] - показывает что внутри выбранной ячейки памяти
Code и CodeStep работает примерно аналогично

Так же я забыл о том, что портировал randint и не использовал его.. я случайно.. исправлю это позже
Чутка поправил:
from random import randint

MemoryStep = 0 # Выбранная ячейка памяти от 0 до 31
Memory = [] # Ячейки памяти
for i in range(32):
Memory.append(0)

CodeStep = 0 # Какой символ сейчас компилируется
Code = list(input("Вставьте код:\n\n"))
print("\n")

Stack = 0

try:
while True:

if Code[CodeStep] == ">":
MemoryStep += 1
if MemoryStep > 31:
MemoryStep = 0

elif Code[CodeStep] == "<":
MemoryStep -= 1
if MemoryStep < 0:
MemoryStep = 31

elif Code[CodeStep] == ".":
print(Memory[MemoryStep])

elif Code[CodeStep] == "+":
Memory[MemoryStep] += 1
if Memory[MemoryStep] > 255:
Memory[MemoryStep] = 0

elif Code[CodeStep] == "-":
Memory[MemoryStep] -= 1
if Memory[MemoryStep] < 0:
Memory[MemoryStep] = 255

elif Code[CodeStep] == ",":
Memory[MemoryStep] = int(input(f"[(,){CodeStep};(S){MemoryStep}]: "))
if Memory[MemoryStep] < 0:
Memory[MemoryStep] = 0
elif Memory[MemoryStep] > 255:
Memory[MemoryStep] = 255

elif Code[CodeStep] == "r":
Memory[MemoryStep] = randint(0, 255)

elif Code[CodeStep] == "$":
Stack = Memory[MemoryStep]

elif Code[CodeStep] == "#":
Memory[MemoryStep] = Stack
Stack = 0

CodeStep += 1

except IndexError:
pass

OutMemory = ""
for i in Memory:
OutMemory += str(f"{i} ")
print("\n\n[Memory]:", OutMemory)
print("[Stack]:", Stack)
Сейчас я вспомнил, что когда я создавал коды на brainfuck, то думал, что неплохо было бы его где-то использовать, так как если не усложнять язык раздуванием из мухи слона, то brainfuck - удобный способ оперировать данными в виде ячеек данных... Поэтому у меня появилась мысль: может сделать библиотеку из brainfun и тогда любой сможет его использовать в своих кодах на питоне с целью управления данными?

В любом случае будет две вариации кода: лёгкая, куда вставляешь код и он компилируется и потяжелее, в которой можно задать количество ячеек памяти и прочее...
BrainFun (v1.1)(c).zip
4.2 KB
Создал свой BrainFun! Теперь там куча функций!
Вот пример кода, который выводит "Hello!":
++++++++++$*$*$*--------:>+++++$*$*$*$*>+++++$*$*$<*+:>>+++++$*$*$*$*>+++++$*$*$<*++++++++::>>+++++$*$*$*$*>+++++$*$*$<*+++++++++++:>>+++++$*$*$*-------:c«
BrainFun (v1.3)(c).zip
4.6 KB
Добавлены усливия и мелочи разные