GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (1)   Поиск:  
 Автор Тема: идеи по интерпретатору
Кирилл-Зеленков
Сообщений: 8524
идеи по интерпретатору
Добавлено: 27 мар 26 14:22
Изменено: 27 мар 26 16:11
новые Видеоигры новые технологии
если есть фишки что дать за ИИ она улучшится

донат
https://yoomoney.ru/to/410014503851843
Сбер. 2202200848330781


на Blitz-BASIC
Graphics 640,480,0,2

SetFont(LoadFont("system"))

; v nachale programmy
Global g_text_pos = 0
Global g_text$
Global g_text_word$;

str1$=Input("")
result$=""
Text_Begin(str1$)
While Text_Read_Word()

i=1
v$=""
its_number=False
char$=Mid(g_text_word,i,1)
While (char="0" Or char="1" Or char="2" Or char="3" Or char="4" Or char="5" Or char="6" Or char="7" Or char="8" Or char="9")
its_number=True
v$=v+char
i=i+1
char$=Mid(g_text_word,i,1)
Wend

If its_number = True
Text_Read_Word()
If g_text_word="+" Then
Text_Read_Word()
result$=result$+" "+Str(Int(v)+Int(g_text_word))
EndIf
EndIf

If its_number =False result$=result$+" "+g_text_word

Wend
Print result

WaitKey()

;------------------
Function Text_Begin(text_$)
g_text=text_
g_text_pos = 1
g_text_word=""
End Function

Function Text_Read_Word()
g_text_word =""
If (g_text_pos > Len(g_text))Return 0;

While (Mid(g_text,g_text_pos,1) = " ") : g_text_pos=g_text_pos+1 : Wend
While (Mid(g_text,g_text_pos,1) <> " " And g_text_pos<=Len(g_text))
g_text_word =g_text_word+ Mid(g_text,g_text_pos,1);
g_text_pos=g_text_pos+1
Wend
g_text_pos=g_text_pos+1;
Return 1;
End Function
[Ответ][Цитата]
Кирилл-Зеленков
Сообщений: 8524
На: идеи по интерпретатору
Добавлено: 27 мар 26 15:23
оптимизированная версия

str1$=Input("")
result$=""
Text_Begin(str1$)
While Text_Read_Word()

If It_Number() = False result$=result$+" "+g_text_word

If It_Number() = True
v1$= g_text_word
Text_Read_Word()
If g_text_word="+" Then
Text_Read_Word()
result$=result$+" "+Str(Int(v1)+Int(g_text_word))
EndIf
EndIf

Wend
Print result

WaitKey()

;------------------
Function It_Number()
char$=Mid(g_text_word,1,1)
If (char="0" Or char="1" Or char="2" Or char="3" Or char="4" Or char="5" Or char="6" Or char="7" Or char="8" Or char="9")Return True
Return False
End Function

[Ответ][Цитата]
Кирилл-Зеленков
Сообщений: 8524
На: идеи по интерпретатору
Добавлено: 27 мар 26 16:00
сделаем интерпретатор умнее

While(True)
str1$=Input(">")
Text_Begin(str1$)
b_print = False
result$=""
While Text_Read_Word()

If g_text_word="print" Then b_print = True
If g_text_word<>"print" And It_Number() = False result$=result$+" "+g_text_word

If It_Number() = True
v1$= g_text_word
Text_Read_Word()
If g_text_word="+" Then
Text_Read_Word()
result$=result$+" "+Str(Int(v1)+Int(g_text_word))
EndIf
EndIf

Wend
If b_print = True Then Print result

Wend


[Ответ][Цитата]
Кирилл-Зеленков
Сообщений: 8524
На: идеи по интерпретатору
Добавлено: 27 мар 26 17:44
разложил по полочкам
Graphics 640,480,0,2

SetFont(LoadFont("system"))

; v nachale programmy
Global g_text_pos = 0
Global g_text$
Global g_text_word$;

While(True)
str1$=Input(">")
Text_Begin(str1$)
b_print = False
result$=""
While Text_Read_Word()

If g_text_word="print" Then b_print = True :Text_Read_Word()
result=result+" "+Formula_Run()

Wend
If b_print = True Then Print result

Wend

;------------------
Function Formula_Run$()
If It_Number() = False Then Return g_text_word

v1$= g_text_word
Text_Read_Word()

If g_text_word="+" Then
Text_Read_Word()
Return Str(Int(v1)+Int(g_text_word))
Else
Return v1
End If

Return ""

End Function

;------------------
Function It_Number()
char$=Mid(g_text_word,1,1)
If (char="0" Or char="1" Or char="2" Or char="3" Or char="4" Or char="5" Or char="6" Or char="7" Or char="8" Or char="9")Return True
Return False
End Function

;------------------
Function Text_Begin(text_$)
g_text=text_
g_text_pos = 1
g_text_word=""
End Function

Function Text_Read_Word()
g_text_word =""
If (g_text_pos > Len(g_text))Return 0;

While (Mid(g_text,g_text_pos,1) = " ") : g_text_pos=g_text_pos+1 : Wend
While (Mid(g_text,g_text_pos,1) <> " " And g_text_pos<=Len(g_text))
g_text_word =g_text_word+ Mid(g_text,g_text_pos,1);
g_text_pos=g_text_pos+1
Wend
g_text_pos=g_text_pos+1;
Return 1;
End Function
[Ответ][Цитата]
 Стр.1 (1)