Перейти к публикации
Форум - ComputerCraft

Рекомендованные сообщения

EJ0Jhne.png

 

Сколько вы можете придумать способов напечатать фразу "Hello World!" десять раз, при помощи Луа?

 

Мой вклад в копилку:

1) Рекурсией

function hello(times)
  if times > 0 then print "Hello World!"; hello(times-1) end
end
hello(10)

2) Заменой

local source = "          "
local hello = source:gsub(" ", "Hello World!\n")
print(hello)
Изменено пользователем Totoro
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

for i = 1, 10 do

     print('Hello World!)

end

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

print('Hello World!')

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

print(string.rep("Hello world!\n", 10))

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Самое очевидное это циклы

Goto:

i = 10
::hello::
print('Hello World!')
i = i - 1
if i >= 1 then
  goto hello
end

While:

i = 10
while i >= 1 do
  print('Hello World!')
  i = i - 1
end

Repeat:

i = 10
repeat
  print('Hello World!')
  i = i - 1
until i <= 0
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пара идей, в которых счетчиком цикла является сама фраза "Hello World!"

s1="He" s2="llo World!"
repeat
  print(s1..s2)
  s1=s1..s2:sub(1,1)
  s2=s2:sub(2)
until s2==""
s1="Hello World!"
for _ in s1:gmatch("%w") do
 print(s1)
end
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

print('Hello World! Десять раз')

 

:)

  • Like 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
local int = 0
local f = require("filesystem")
require("term").clear()

if f.exists("hello") then 
 local file = io.open("hello","r")
 int = file:read(1)
 file:close()
end

if int == 10 then os.exit() end

print("Hello World!")
int = int + 1
file = io.open("hello","w")
file:write(int)
file:flush()
file:close()
os.execute("helloworld")
os.exit()

Прожка достает число из файла hello, если он есть, затем смотрит, если число 10 - то есть прога уже выполнила все, что нужно, то выходит не создавая новый свой экземпляр, если же нет - то пишет Hello World, добавляет 1 к числу, открывает файл hello на запись и пишет туда это число. Затем запускает сама себя и закрывается.

 

Писал по памяти, на компе OC не тестировал, концепт думаю ясен

Изменено пользователем danshat
  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

gpu=require("component").gpu
s="Hello World!"
for i=1,1000 do
x=math.random(12)
y=math.random(10)
gpu.set(x,y,s:sub(x,x))
os.sleep(0.1)
end
  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


local t = {}

for i = 1, 10 do
t[i] = "Hell"
end

print(table.concat(t, "o, World!\n") .. "o, World!")

 

Изменено пользователем LeshaInc
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


function map(func, array)
local new_array = {}
for i,v in ipairs(array) do
new_array[i] = func(v)
end
return new_array
end

local range = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

map(function() print("Hello World!") end, range)

 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

io.write(string.char(72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10, 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33, 10))
  • Like 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


local str = 'hello world'

local str_len = #str

for i = 1, 10 do
local matches = 0
local now_ch = string.sub(str, 1, 1)
while matches <= str_len do
local ch = string.char(math.random(1, 255))
if ch == now_ch then
io.write(ch)
matches = matches + 1
now_ch = string.sub(str, matches + 1, matches + 1)
end
end
print()
end

 

Изменено пользователем NEO
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо десять раз напечатать. У тебя только один. =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо десять раз напечатать. У тебя только один. =)

Так печатает 10 раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


local gpu = require("component").gpu;
local str = "Hello world!"
 
for i = 1, str:len() do
 gpu.fill(i,1,1,10,str:sub(i,i));
end;


  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах


io = require("io")
file = io.open("hello.lua","w")
file:write("print('hello world')")
file:flush()
file:close()
for i=1,10 do
dofile("hello.lua")
end


load(string.rep("print(\"hello world\")",10))()
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Многопоточный способ

mQbjrMx.gif
Используя еще недописанную операционку xD

Код программы(запущены 10 копий):
 

local c = "Hello world!"
local gpu = require("component").gpu
for i = 1, #c do
    gpu.set(i, 1, c:sub(i, i))
    os.sleep(0.125)
end
Изменено пользователем RccHD
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
a = "Hello world!"
print(a, a, a, a, a, a, a, a, a, a)

Предупреждение:я новичок в кубе, по сути то же самое что и у evgkul, просто в двух строчках. Могу и накосячить(возможно)

Я кстать это и подразумевал в чате. 

Изменено пользователем AnothRt
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понятно, что уже все предложили всевозможные методы этого примера.

Вроде попытался практически сделать чтобы не совпадал с примерами в этом топике.

И вот на сколько мой мозг смог сгенерировать данную идею  B-)

 

У самый банальный и извращенный способ, но просто я не указываю, что нужно 10 раз выводить, все идет автоматически.

Ну думаю продвинутые Лунатики прочтут и поймут мой патологически больной способ  :D

for i = 1, table.concat({"Hello World!"}):gsub('%W',''):len() do
  print(table.concat({"Hello World!"}))
end
Но вроде работает, можете проверить  ;)
  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Дратути!

 

Программисты такие программисты ;)

 

Скопировать Hello World! в буфер, запустить цомпутер в майне и прямо в командной строке 10 раз нажать инсерт. Фомально условия ТЗ выполнены, т.к. ОС на Луа обрабатывает ввод/вывод.

 

Можно еще с echo извратиться. Как в древней бородатой задачке.

 

ЗЫ

Есть еще медитативно-хаотический метод для истинных гуру, выводить в поток рандомные символы. Рано или поздно фраза Hello World! будет выведена 10 раз, и дзен результат будет достигнут. 

Изменено пользователем swg2you
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

напечатать фразу "Hello World!" десять раз, при помощи Луа

Программисты такие программисты

...

Фомально условия ТЗ выполнены

И не говори. Программисты вечно всё усложняют.

E8zddO7.png

  • Like 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И не говори. Программисты вечно всё усложняют.

Зачот. Ждем программу для робота, которая будет высекать хеловорды в толще породы. Изменено пользователем eu_tomat
оффтопчик
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
local charset = {}
txt1 = ""
txt2 = ""
hello_build = false
-- qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890
for i = 48,  57 do table.insert(charset, string.char(i)) end
for i = 65,  90 do table.insert(charset, string.char(i)) end
for i = 97, 122 do table.insert(charset, string.char(i)) end

function string.random(length)
  math.randomseed(os.time())

  if length > 0 then
    return string.random(length - 1) .. charset[math.random(1, #charset)]
  else
    return ""
  end
end
print("Building hello world please wait...")
while true do
  m = string.random(5)
  if m == "hello" then
    txt1 = m
    hello_build = true
    print("HELLO IS BUILDED! Building word 'world' ")
  end
  if m == "world" and hello_build then
    txt2 = m
    hello_build = true
    print("Hello world is builded. printing 10 times!")
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    print(txt1, txt2)
    break
  end
end

Когда-нибудь всё таки напишет Hello World 10 раз

Изменено пользователем Laine_prikol

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
and hello_build = true

5669-arhimed.jpg

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
-- qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890

эт чё

 

как говрил леший

Просто и без задней мысли при помощи Луа

Изменено пользователем ivan52945

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

эт чё

латинские буквы и цифры в порядке QWERTY-клавиатуры :D
другое дело - зачем оно тут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
h = function()
  print("Hello world!")
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end
if true then
 h()
end

Или вот еще:

local text = "Hello"
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")
print(text.." world")

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×