Re: таблица синусов
От: kov_serg Россия  
Дата: 09.12.21 20:13
Оценка:
Здравствуйте, кт, Вы писали:

кт>Попалась на глаза задача-шутка.

кт>Требуется вывести на экран (или в текстовый файл) таблицу синусов для целых значений углов в градусах от 0 до 90 с заголовком «угол» и «синус».
кт>Прямо скажем, задание для восьмиклассников на уроке информатики.
кт>Но добавлены три смешных ограничения:
кт>а) внутри текстовых констант нельзя указывать пробелы явно;
кт>б) таблица должна начинаться с 50-го столбца;
кт>в) весь вывод должен быть записан единственным оператором.

кт>или то же с привычными английскими ключевыми словами:

кт>
кт>tabl_sin: proc main;
кт>dcl i fixed;
кт>put edit('─'(20),'│угол│','синус','│','─'(20))(2(col(50),a),2(x(4),a))
кт>(('│',i,'│',sind(i),'│','─'(20) do i = 0 to 90))(col(50),a,f(3),x(1),a,f(12,8),x(1),a,col(50),a);
кт>end tabl_sin;


кт>А вот получится ли так же компактно и просто на других языках?

На разных языках получится по разному, даже на одном есть тьма вариантов.
#!/usr/bin/lua

function F(...) return string.format(...) end
function sin(x) return math.sin(x/180*math.pi) end
function gen_table(p)
    local res,append={}
    append=function(x) table.insert(res,x) end
    append(p.line) append(p.header) append(p.line)
    p.walk(function(i) append(p.row(i)) append(p.line) end)
    return table.concat(res,"\n")
end

V,H='|','+----+'..string.rep('-',13)..'+'

print(gen_table{
    header=F("%51sугол%s%14s%5s",V,V,'синус',V), line=F("%70s",H),
    row=function(i) return F("%51s%3d%2s%12.8f%2s",V,i,V,sin(i),V) end,
    walk=function(row) for i=0,90 do row(i) end end,
})

  output
                                                  +----+-------------+
                                                  |угол|    синус    |
                                                  +----+-------------+
                                                  |  0 |  0.00000000 |
                                                  +----+-------------+
                                                  |  1 |  0.01745241 |
                                                  +----+-------------+
                                                  |  2 |  0.03489950 |
                                                  +----+-------------+
                                                  |  3 |  0.05233596 |
                                                  +----+-------------+
                                                  |  4 |  0.06975647 |
                                                  +----+-------------+
                                                  |  5 |  0.08715574 |
                                                  +----+-------------+
                                                  |  6 |  0.10452846 |
                                                  +----+-------------+
                                                  |  7 |  0.12186934 |
                                                  +----+-------------+
                                                  |  8 |  0.13917310 |
                                                  +----+-------------+
                                                  |  9 |  0.15643447 |
                                                  +----+-------------+
                                                  | 10 |  0.17364818 |
                                                  +----+-------------+
                                                  | 11 |  0.19080900 |
                                                  +----+-------------+
                                                  | 12 |  0.20791169 |
                                                  +----+-------------+
                                                  | 13 |  0.22495105 |
                                                  +----+-------------+
                                                  | 14 |  0.24192190 |
                                                  +----+-------------+
                                                  | 15 |  0.25881905 |
                                                  +----+-------------+
                                                  | 16 |  0.27563736 |
                                                  +----+-------------+
                                                  | 17 |  0.29237170 |
                                                  +----+-------------+
                                                  | 18 |  0.30901699 |
                                                  +----+-------------+
                                                  | 19 |  0.32556815 |
                                                  +----+-------------+
                                                  | 20 |  0.34202014 |
                                                  +----+-------------+
                                                  | 21 |  0.35836795 |
                                                  +----+-------------+
                                                  | 22 |  0.37460659 |
                                                  +----+-------------+
                                                  | 23 |  0.39073113 |
                                                  +----+-------------+
                                                  | 24 |  0.40673664 |
                                                  +----+-------------+
                                                  | 25 |  0.42261826 |
                                                  +----+-------------+
                                                  | 26 |  0.43837115 |
                                                  +----+-------------+
                                                  | 27 |  0.45399050 |
                                                  +----+-------------+
                                                  | 28 |  0.46947156 |
                                                  +----+-------------+
                                                  | 29 |  0.48480962 |
                                                  +----+-------------+
                                                  | 30 |  0.50000000 |
                                                  +----+-------------+
                                                  | 31 |  0.51503807 |
                                                  +----+-------------+
                                                  | 32 |  0.52991926 |
                                                  +----+-------------+
                                                  | 33 |  0.54463904 |
                                                  +----+-------------+
                                                  | 34 |  0.55919290 |
                                                  +----+-------------+
                                                  | 35 |  0.57357644 |
                                                  +----+-------------+
                                                  | 36 |  0.58778525 |
                                                  +----+-------------+
                                                  | 37 |  0.60181502 |
                                                  +----+-------------+
                                                  | 38 |  0.61566148 |
                                                  +----+-------------+
                                                  | 39 |  0.62932039 |
                                                  +----+-------------+
                                                  | 40 |  0.64278761 |
                                                  +----+-------------+
                                                  | 41 |  0.65605903 |
                                                  +----+-------------+
                                                  | 42 |  0.66913061 |
                                                  +----+-------------+
                                                  | 43 |  0.68199836 |
                                                  +----+-------------+
                                                  | 44 |  0.69465837 |
                                                  +----+-------------+
                                                  | 45 |  0.70710678 |
                                                  +----+-------------+
                                                  | 46 |  0.71933980 |
                                                  +----+-------------+
                                                  | 47 |  0.73135370 |
                                                  +----+-------------+
                                                  | 48 |  0.74314483 |
                                                  +----+-------------+
                                                  | 49 |  0.75470958 |
                                                  +----+-------------+
                                                  | 50 |  0.76604444 |
                                                  +----+-------------+
                                                  | 51 |  0.77714596 |
                                                  +----+-------------+
                                                  | 52 |  0.78801075 |
                                                  +----+-------------+
                                                  | 53 |  0.79863551 |
                                                  +----+-------------+
                                                  | 54 |  0.80901699 |
                                                  +----+-------------+
                                                  | 55 |  0.81915204 |
                                                  +----+-------------+
                                                  | 56 |  0.82903757 |
                                                  +----+-------------+
                                                  | 57 |  0.83867057 |
                                                  +----+-------------+
                                                  | 58 |  0.84804810 |
                                                  +----+-------------+
                                                  | 59 |  0.85716730 |
                                                  +----+-------------+
                                                  | 60 |  0.86602540 |
                                                  +----+-------------+
                                                  | 61 |  0.87461971 |
                                                  +----+-------------+
                                                  | 62 |  0.88294759 |
                                                  +----+-------------+
                                                  | 63 |  0.89100652 |
                                                  +----+-------------+
                                                  | 64 |  0.89879405 |
                                                  +----+-------------+
                                                  | 65 |  0.90630779 |
                                                  +----+-------------+
                                                  | 66 |  0.91354546 |
                                                  +----+-------------+
                                                  | 67 |  0.92050485 |
                                                  +----+-------------+
                                                  | 68 |  0.92718385 |
                                                  +----+-------------+
                                                  | 69 |  0.93358043 |
                                                  +----+-------------+
                                                  | 70 |  0.93969262 |
                                                  +----+-------------+
                                                  | 71 |  0.94551858 |
                                                  +----+-------------+
                                                  | 72 |  0.95105652 |
                                                  +----+-------------+
                                                  | 73 |  0.95630476 |
                                                  +----+-------------+
                                                  | 74 |  0.96126170 |
                                                  +----+-------------+
                                                  | 75 |  0.96592583 |
                                                  +----+-------------+
                                                  | 76 |  0.97029573 |
                                                  +----+-------------+
                                                  | 77 |  0.97437006 |
                                                  +----+-------------+
                                                  | 78 |  0.97814760 |
                                                  +----+-------------+
                                                  | 79 |  0.98162718 |
                                                  +----+-------------+
                                                  | 80 |  0.98480775 |
                                                  +----+-------------+
                                                  | 81 |  0.98768834 |
                                                  +----+-------------+
                                                  | 82 |  0.99026807 |
                                                  +----+-------------+
                                                  | 83 |  0.99254615 |
                                                  +----+-------------+
                                                  | 84 |  0.99452190 |
                                                  +----+-------------+
                                                  | 85 |  0.99619470 |
                                                  +----+-------------+
                                                  | 86 |  0.99756405 |
                                                  +----+-------------+
                                                  | 87 |  0.99862953 |
                                                  +----+-------------+
                                                  | 88 |  0.99939083 |
                                                  +----+-------------+
                                                  | 89 |  0.99984770 |
                                                  +----+-------------+
                                                  | 90 |  1.00000000 |
                                                  +----+-------------+
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.