Створюйте коробки!


19

Ваше завдання - генерувати коробки, використовуючи будь-який символ ASCII стосовно даних, що вводяться.

Випробування

1 1   --> =====
          =   =
          =====

1 2   --> =========
          =   =   =
          =========

2 1   --> =====
          =   =
          =====
          =   =
          =====

2 2   --> =========
          =   =   =
          =========
          =   =   =
          =========

2 5   --> =====================
          =   =   =   =   =   =
          =====================
          =   =   =   =   =   =
          =====================

Вхідні дані

  • Введення можна взяти з одного з наступних

    • stdin
    • Аргументи командного рядка
    • Аргументи функції (2 аргументи, по одному на кожне число)
  • Введений з stdinаргументів або аргументів командного рядка буде містити два натуральних числа, відокремлених пробілом.

  • Два числа позначають кількість полів у кожному стовпчику та рядку

Вихідні дані

  • Коробки повинні бути виведені у stdout(або найближчому еквіваленті)
  • Кожен ящик повинен мати в них три горизонтальних проміжки

Правила

  • Обидва числа будуть більшими за 0, але не перевищуватимуть 1000
  • Будь-який видимий символ може бути використаний для виведення полів. (доки вони не надто суворі на оці!)
  • Вам дозволяється писати повну програму або функцію.
  • Не повинно бути зайвих символів, за винятком необов'язкового символу, що виводиться з нового рядка.

Оцінка балів

Це , тому найкоротше подання (у байтах) виграє.

Відповіді:



10

Сітківка , 57 байт

1(?=.* (1*))
$1#$1#


1(?=(1*#1*#)*$)
=   
1
====
#
=#

Здійснює введення в одинаковому порядку із заднім рядком.

Кожен рядок повинен мати свій власний файл і його #слід змінити на новий рядок у файлах. Це непрактично, але ви можете запустити код як один файл із -sпрапором, зберігаючи #маркери (і змінивши нижній рядок на# вхід). При бажанні ви можете змінити #спинку на нові рядки у висновку, щоб читати. Наприклад:

> echo -n 11 111#|retina -s boxes|tr # '\n'
=============
=   =   =   =
=============
=   =   =   =
=============

Метод: 5 етапів заміни. Перші два (перші 4 рядки) створюють2*N+1 на Mсітці одиниць і наступних 3 кроків (6 ліній) форматі його в бажаний результат.

Проміжні рядки (відмежовані -'s):

11 111
------------------
111
111
111
111
 111
------------------
111
111
111
111
111
------------------
111
=   =   =   
111
=   =   =   
111
------------------
============
=   =   =   
============
=   =   =   
============
------------------
=============
=   =   =   =
=============
=   =   =   =
=============

Один файл у рядку завжди здається дуже незвичайним вибором дизайну.
курйозданні

1
@curiousdannii Це зроблено таким чином, щоб символ нового рядка міг бути використаний у виразах регулярних виразів, але не планується його змінити в більш розумний формат 1-файлів.
randomra

8

JavaScript ( ES6 ), 83

Функція з параметрами рядків і стовпців. Використовуючи рядки шаблону, є 2 вбудовані нові рядки, які є значущими та рахуються.

Вихід через alert(спливаюче вікно). Оскільки alertвикористовуємо пропорційний шрифт, ми отримуємо кращий результат, використовуючи лист із шириною, подібною до пробілу, а не =.

Перевірте Firefox за допомогою консолі, щоб мати реальний alertвихід, або запустіть фрагмент нижче.

f=(r,c)=>{for(x=y="|";c--;)x+="||||",y+="   |";for(o=x;r--;)o+=`
${y}
`+x;alert(o)}

// TEST

// redefine alert to avoid that annoying popup during test
alert=x=>O.innerHTML=x

test=_=>([a,b]=I.value.match(/\d+/g),f(a,b))

test()
<input id=I value='2 3'><button onclick="test()">-></button>
<pre id=O></pre>


Фрагмент запуску коду для мене не працює, просто побачте поле «2 3» всередині та стрілку, яка, здається, підказує, що вам слід натиснути його, щоб отримати результат. Використання кнопки повної сторінки або спробу іншого браузера нічого не змінює.
Денніс Джахеруддін

@DennisJaheruddin, те ж саме відбувається і при використанні хрому (не підтримує ES6). Спробуйте firefox.
Spikatrix

1
@DennisJaheruddinTest in Firefox
edc65

7

JavaScript (ES6), 75 73

Використовуючи рясні repeatдзвінки, ми повторюємо |, потім повторюємо |з пробілами та повторюємо обидва ці повтори, щоб скласти рядки:

f=(y,x)=>alert(((s="|"[r="repeat"](x*4)+`|
`)+"|   "[r](x)+`|
`)[r](y)+s)

(Нові рядки є важливими, за пропозицією edc65 використовувати рядки шаблону.)

Фрагмент:

<input id="x" type="range" max="10" min="1" step="1" value="3"><input id="y" type="range" max="10" min="1" step="1" value="2"><pre id="o"></pre><script>function f(y,x){return ((s="|"[r="repeat"](x*4)+"|\n")+"|   "[r](x)+"|\n")[r](y)+s};function redraw(){document.getElementById("o").innerHTML=f(document.getElementById("y").value,document.getElementById("x").value)};document.getElementById("x").onchange=redraw;document.getElementById("y").onchange=redraw;document.getElementById("x").oninput=redraw;document.getElementById("y").oninput=redraw;redraw();</script>

Без рядків шаблону, без повторного використання імені методу та з доданим пробілом:

f=(y,x)=>alert(
    (
      (s="|".repeat(x*4)+"|\n") + 
      "|   ".repeat(x)+"|\n"
    ).repeat(y)+s
)

(Використовуючи рекомендацію edc65 для використання |для кращого зорового проміжку.)


7

Піп, 29 24 = 23 + 1 байт

Потрібен -nпрапор. Приймає висоту та ширину як аргументи командного рядка та створює поля з 1s.

([1X4m]XbRLa+1)@<v.1R0s

Пояснення:

                         a,b are cmdline args; m is 1000; v is -1; s is " " (implicit)
 [1X4m]                  List containing 1111 and 1000
       Xb                String repetition of each element b times
         RLa+1           Repeat the list a+1 times
(             )@<v       Now we have one row too many at the end, so take everything
                         but the last item (equiv to Python x[:-1])
                  .1     Concatenate a 1 to the end of each row
                    R0s  Replace 0 with space
                         Print, joining list on newlines (implicit, -n flag)

Ця програма сильно користується тим, що рядки - це числа, а числа - це рядки в Pip. (І три пробіли в цих полях виявилися справедливими, щоб скористатися вбудованою mзмінною!)

Ось як складається список зі введенням даних 2 3:

[1111;1000]
[111111111111;100010001000]
[111111111111;100010001000;111111111111;100010001000;111111111111;100010001000]
[111111111111;100010001000;111111111111;100010001000;111111111111]
[1111111111111;1000100010001;1111111111111;1000100010001;1111111111111]
[1111111111111;"1   1   1   1";1111111111111;"1   1   1   1";1111111111111]

І кінцевий вихід:

C:\> pip.py 2 3 -ne "([1X4m]XbRLa+1)@<v.1R0s"
1111111111111
1   1   1   1
1111111111111
1   1   1   1
1111111111111

Детальніше про Pip


6

Перл, 72 63 52 50 байт

Моя найкоротша версія поки що використовується $/ для отримання більш чіткої нової лінійки:

$ perl -e 'print((($,="="."   ="x pop.$/)=~s/./=/gr)x(1+pop))' 2 5
=====================
=   =   =   =   =   =
=====================
=   =   =   =   =   =
=====================

Попереднє оновлення розміщує в основному порожні рядки у розділювачі записів на виході $,та друкує список безперервних рядків.

$ perl -e 'print((($,="="."   ="x pop."\n")=~s/./=/gr)x(1+pop))' 2 5

Попередня версія може бути трохи зрозумілішою для випадкового читача:

$ perl -E 'say($y=($x="="."   ="x pop)=~s/./=/gr);for(1..pop){say$x;say$y}' 2 5

Перша версія, що використовується @ARGVзамість pop:

$ perl -E 'say($y=($x="="."   ="x$ARGV[1])=~s/./=/gr);for(1..$ARGV[0]){say$x;say$y}' 2 5


5

GNU sed -r, 160

Зітхніть, я думав, що це буде менше, але ось це все одно. На жаль, sed regexes не мають можливості пошуку.

:
s/(.*)1$/   =\1/;t
s/([= ]+)/\1\n\1/
:b
s/   (.*\n)/===\1/;tb
s/(1*)1 $/\n\1/
:c
s/([^\n]*\n[^\n]*\n)(1*)1$/\1\1\2/;tc
s/(=+)(.*)/\1\2\1/
s/(^|\n)(.)/\1=\2/g

Приймаючи дані як неперевірені від STDIN:

$ sed -rf boxes.sed <<< "11 111"
=============
=   =   =   =
=============
=   =   =   =
=============
$

4

CJam, 25 байт

q~)S3*'=5*+4/f*3f>\)*1>N*

Спробуйте його в Інтернеті в інтерпретаторі CJam .

Як це працює

q~                        e# Read H and W from STDIN.
   S3*'=5*+               e# Push "   =====".
           4/             e# Chop into ["   =" "===="].
  )          f*           e# Repeat each string W+1 times.
               3f>        e# Cut off the first three characters.
                  \)*     e# Repeat the resulting array H+1 times.
                     1>   e# Remove the first string.
                       N* e# Join the lines.

4

Marbelous, 168 байт

Ця відповідь працює лише до 255x255, а не 1000x1000 через обмеження мови Marbelous. Я працюю над 32-розрядною бібліотекою, але незабаром вона не буде готова.

Вхід подається у вигляді двох параметрів командного рядка або параметрів функції на основну плату.

@2@3}1@0
SLEL//>0\/
@3@1}0--
}1&0@0/\&0
@1/\@2}1\/
:SL
..}0@0
&0/\>0&0
EN..--\/
{0@0/\ES
:EL
..@0
..>0EN
}0--\/
@0/\EX
:EX
}0
\/3D3D3D3D
:ES
}0
\/3D202020
:EN
}0
{03D0A

Псевдокод:

MB(H,W):
    EL(W)
    for 1..H:
        SL(W)
        EL(W)
EL(W):
    for 1..W:
        EX()
    EN()
SL(W):
    for 1..W:
        ES()
    EN()
EX():
    print "===="
ES():
    print "=   "
EN():
    print "=\n"

3

CJam 52 51 46 41 байт

l~:B;:A;'=:U{{U4*}B*N}:V~{U{SZ*U}B*NUV}A*

Завдяки Sp3000 за -5 символів

Завдяки Мартіну Бюттнеру ♦ ще 5 символів

Спробуй це


3

c функція, 81

x,y;f(h,w){for(;y<=h*2;y++)for(x=0;x<w*4+2;x++)putchar(x>w*4?10:x&3&&y&1?32:61);}

Тестова програма:

x,y;f(h,w){for(;y<=h*2;y++)for(x=0;x<w*4+2;x++)putchar(x>w*4?10:x&3&&y&1?32:61);}

int main (int argc, char **argv)
{
  f(2, 3);
}

Я скинув кілька символів, щоб розглядати це як єдиний рядок замість подвійного для: x;f(h,w){for(w=w*4+2;x<=w*h*2+w;x++)putchar(x%w?x/w%2?x%w%4!=1?32:61:61:10);}- 78

1
Потрібно спочатку подивитись на інші відповіді = /, мій коментар - це довша версія відповіді Рето Кораді.

так, я дуже намагався (і не зміг) перетворити це в єдиний (коротший) цикл
Digital Trauma

3

PHP4.1, 76 71 69 байт

Це так само гольф, як я можу отримати.

$R=str_repeat;echo$R(($T=$R('-',4*$H+1))."
|{$R('   |',$H)}
",$V),$T;

Це очікує, що ключ Hматиме кількість рядків та Vкількість полів на рядок.

Я використовую -і |просто так коробки насправді виглядають як коробки. Якщо потрібно, я можу змінити його =. Не має значення гра, яка використовується.
Залишаючи, -а |також допомагає зрозуміти безлад, який відбувається.


Старий метод, 76 байт:

for($R=str_repeat;$H--;)echo$T=$R('-',($V*4)+1),"
|{$R('   |',$V)}
";echo$T;

Приклад виходу:

http://localhost/file.php?H=2&V=3

-------------
|   |   |   |
-------------
|   |   |   |
-------------

3

Джулія, 59 байт

(n,m)->(l="="^(4m+1)*"\n";print(l*("="*"   ="^m*"\n"*l)^n))

Це створює неназвану функцію, яка приймає два цілі числа як вхідні дані і друкує результат на STDOUT. Щоб зателефонувати, дайте ім’я, наприкладf=(n,m)->... .

Недоліки + пояснення:

function f(n, m)
    # Store the solid row
    l = "="^(4m + 1) * "\n"

    # Print all rows by repeating a pattern n times
    print(l * ("=" * "   ="^m * "\n" * l)^n)
end

Приклади:

julia> f(2, 3)
=============
=   =   =   =
=============
=   =   =   =
=============

julia> f(1, 5)
=====================
=   =   =   =   =   =
=====================

Будь-які пропозиції вітаються.


3

bash + coreutils, 57

dc -e"2do$2 4*1+^1-pd8*F/1+$1si[fli1-dsi0<c]dscx"|tr 0 \ 

Для цього використовується dcдля друку двійкових чисел, які мають 1s для країв вікна та 0s для пробілів.

  • число X -одиниці X обчислюється 2 ^ (width * 4 + 1) - 1, потім натискається і друкується
  • 10001...0001число обчислюється шляхом , потім штовхнувX* 8 / 15 + 1
  • потім стек скидається heightраз

У trпотім перетворює0 S в просторі символів.

Вихідні дані

$ ./boxes.sh 2 4
11111111111111111
1   1   1   1   1
11111111111111111
1   1   1   1   1
11111111111111111
$ 

3

R, 83 81

Як неназвана функція, що приймає h і w як параметри. Будує 1-й та другий рядки у векторному для кожного ряду та повторює його hраз. Додає вектор для нижньої лінії і catвикреслює вектор, використовуючи fillдля обмеження довжини ліній. Тепер скористається будь-яким правилом видимого символу.

function(h,w)cat(rep(c(A<-rep(1,w*4+2),rep('   1',w)),h),A[-1],fill=w*4+1,sep='')

Тестовий запуск

> f=function(h,w)cat(rep(c(A<-rep(1,w*4+2),rep('   1',w)),h),A[-1],fill=w*4+1,sep='')
> f(4,2)
111111111
1   1   1
111111111
1   1   1
111111111
1   1   1
111111111
1   1   1
111111111
> 

3

Пітон 3 2, 160 87 85 79 байт

Я знаю, що це може бути набагато більше гольфу , я хотів би отримати кілька пропозицій, оскільки це моя перша спроба в гольфі.

def d(x,y):
    for i in[1]*x:print'='*(4*y+1)+'\n'+'=   '*(y+1)
    print'='*(4*y+1)

Завдяки порадам @Cool Guy та @ Sp3000, я зменшив розмір трохи вище нижче половини.

Напр .: d (3,3)

=============
=   =   =   =   
=============
=   =   =   =   
=============
=   =   =   =   
=============

Спробуйте це тут .

Вибачте пробіли пробілів.


1
Рівень відступу можна знизити.
Spikatrix

3
Вам не потрібно складати список, а потім приєднуйтесь. Рядки можна помножити'='*(4*y+1)
Sp3000

1
Налаштування w=4*y+1заощаджує 3 байти.
DLosc

@Cool Guy Я використовую вкладку, а не 4 пробіли.
nsane

О, добре. Не помічав цього.
Spikatrix

2

КДБ (Q), 37 байт

{(3+2*x-1)#(5+4*y-1)#'(4#"=";"=   ")}

Пояснення

                      (4#"=";"=   ")     / box shape
           (5+4*y-1)#'                   / extend y axis
 (3+2*x-1)#                              / extend x axis
{                                   }    / lambda

Тест

q){(3+2*x-1)#(5+4*y-1)#'(4#"=";"=   ")}[2;5]
"====================="
"=   =   =   =   =   ="
"====================="
"=   =   =   =   =   ="
"====================="

2

JavaScript, 92 85 байт

Я сподівався, що це буде коротше, ніж інша відповідь JS (приємна робота, як завжди, edc65), але о добре. У мене таке відчуття, що математика тут може бути додатково гольф.

f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s

Вибачте, не можу допомогти з математикою - у мене крутиться голова ... але ось дещо мікроп: f=(r,c)=>(x=>{for(i=s='';(y=i++/x)<r-~r;)s+=i%x?' *'[-~y%2|!(-~i%4)]:'\n'})(4*c+2)||s-> 85
edc65

@ edc65 це чудово, дякую! Такі речі, як 2*r+1=> - r-~rце саме те, що я мав на увазі під гольфом математики, і саме цей геній. :)
vvye

2

Октава, 69 65 64

y=ones([2,4].*input()+1);y(1:2:end,:)=y(:,1:4:end)=4;char(y+31)

Дякуємо DLosc, що вказав на проблеми, які призвели до -1

Приймає вхід як [1 1]і вихід:

#####
# #
#####

Ви також можете просто ввести "1" і отримати 1x1. Якщо введення дійсно потрібно1 1 , розмір збільшується88 8584 :

y=ones([2,4].*eval(['[',input(0,'s'),']'])+1);y(1:2:end,:)=y(:,1:4:end)=4;char(y+31)

Примітка: Matlab не дозволяє ланцюжок або введення Octave (ціле число), але ось версія Matlab ( 67 ):

y=ones([2,4].*input('')+1);y(1:2:end,:)=4;y(:,1:4:end)=4;char(y+31)

2

C, 76 байт

w,n;f(r,c){for(w=c*4+2,n=w*r*2+w;n--;)putchar(n%w?n/w%2&&n%w%4-1?32:61:10);}

Викликається як функція з числом рядків і стовпців як аргументів. Наприклад:

f(5, 2)

2

CJam, 30 29 байт

Видалена нова версія із надлишком +у кінці (спасибі, Денніс):

l~_4*)'=*N+:F\'=S3*+*'=+N++*F

Я знаю, що Денніс вже розмістив рішення CJam, яке долає це на милі. Але це моя найперша спроба CJam, тому це диво, що воно взагалі працює. :)

Досить груба сила. Перший рядок будує з 4 * H + 1 =знаків, потім другий рядок із =повторних Hразів, з іншим= додаючи . Потім поєднує два рядки, повторює всю справуV раз, а потім додає ще одну копію першого рядка.

Схоже, у мене занадто багато маніпуляцій зі стеком, і навіть в кінцевому підсумку зберігаю перший рядок у змінній, тому що мені довелося перетасувати речі на стеку ще більше.

Не дуже елегантний загалом, але потрібно десь почати ... і я спершу хотів спробувати просту проблему.


Вам не потрібно +в кінці. CJam друкує весь стек.
Денніс

2

CJam, 23

q~[F8]f{2b*1+' f+N}*_0=

Спробуйте в Інтернеті

Пояснення:

q~        read and evaluate the input (height width)
[F8]      make an array [15 8] - 1111 and 1000 in base 2
f{…}      for width and each of [15 8]
  2b      convert the number to base 2
  *       repeat the digits "width" times
  1+      append a 1 to the array of digits (right edge)
  ' f+    add the space character to each digit (0->' ', 1->'!')
  N       push a newline
*         repeat the resulting array "height" times
_0=       copy the first line (bottom edge)


1

Ява, 181

Я сподіваюся, що відповідно до

Вам дозволяється писати повну програму або функцію.

вона відповідає правилам підрахунку байтів функції , що становить 181 в цьому випадку

import static java.lang.System.*;
public class Boxes
{
    public static void main(String[] args)
    {
        Boxes b=new Boxes();
        System.out.println("1,1:");
        b.b(1,1);
        System.out.println("1,2:");
        b.b(1,2);
        System.out.println("2,1:");
        b.b(2,1);
        System.out.println("2,2:");
        b.b(2,2);
        System.out.println("2,5:");
        b.b(2,5);
    }

    void b(int R, int C){String s="",e=s,x,y,z=s,a="====",n="=\n";int r,c;for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="=   ";}s+=x+n+y+n;}for(c=C;c-->0;){z+=a;}s+=z+n;out.println(s);}
}

Вихід неправильний. Дивіться висновок № 2: " Кожне поле має містити три горизонтальні проміжки ". Ваш код видає два пробіли, а не три
Spikatrix

@CoolGuy Помислив це - зараз на 2 байти більше, але це не дуже зміниться ...
Marco13

1
добре. +1. Збережіть два байти, змінивши for(r=R;r-->0;){x=y=e;for(c=C;c-->0;){x+=a;y+="= ";}s+=x+n+y+n;}наfor(r=R;r-->0;s+=x+n+y+n){x=y=e;for(c=C;c-->0;y+="= "){x+=a;}}
Spikatrix

1

C #, 153 151 150

Це насправді не може конкурувати, але ось це просто для розваги:

(h,w)=>{string s="=",e="\n",a="====",b="   =",m=a,o;int i=0,j;for(;i++<=h*2;){o=s;for(j=0;j++<w+1;o=m)System.Console.Write(o);m=m==a?b:a;s=e+s;e="";}}

Як запустити:

public class Program
{
    public static void Main()
    {
        new System.Action<int, int>((h,w)=>{string s="=",e="\n",a="====",b="   =",m=a,o;int i=0,j;for(;i++<=h*2;){o=s;for(j=0;j++<w+1;o=m)System.Console.Write(o);m=m==a?b:a;s=e+s;e="";}})(3, 4);
    }
}

Відкрити для вдосконалень.


замінити рядок на var.
CSharpie

На жаль, це не дозволено. Дивіться це
pmudra

1
Оголошення цих ints за межами циклу може зберегти байт.
Spikatrix

1

Python 2.7, 66 байт.

Я знаю, що в пітоні вже є кращі рішення, але це найкраще, що я придумав.

def f(x,y):a,b,c="="*4,"   =","\n=";print "="+a*y+(c+b*y+c+a*y)*x

Приклад:

f(3,4)

=================
=   =   =   =   =
=================
=   =   =   =   =
=================
=   =   =   =   =
=================

Вибачте, але це дає неправильний висновок для тестових випадків 2,3 та 5. Ви змішали стовпці та рядки та отримали це навпаки.
Spikatrix

1

Рубі, 57 48 45

f=->h,w{l=?=*w*4+?=;(l+$/+'=   '*w+"=
")*h+l}

Використання:

print f[2,5]

Завдяки манатурності за збереження 3 байт.


Дві невеликі можливості вдосконалення: '='?=і "<LF>"$/.
манатура

Ще одна маленька: ?=*(w*4+1)?=+?=*w*4
манатура

1

Java, 123 119 байт

void p(int h,int w){String b="=",d="\n=";for(;w-->0;d+="   =")b+="====";for(d+="\n"+b;h-->0;b+=d);System.out.print(b);}

Зловживання вхідними параметрами як лічильників значно допомогло зменшити розмір коду.

Дякуємо Cool Guy, що запропонував зловживати синтаксисом.


Гольфуйте його більше, використовуючи forпетлю замість whileпетлі.
Spikatrix

На жаль, для (; w -> 0;) така ж довжина, як і час (w -> 0)
ECS

1
Я мав на увазі while(w-->0){d+=" =";b+="====";}-> for(;w-->0;b+="====")d+=" =";що зберігає три байти
Spikatrix

Ти правий. Мені вдалося вичавити 4 байти з цього завдяки вашій пропозиції.
ECS

1

SAS, 117 119

macro a array a[0:1]$4('#   ' '####');do x=1 to 2+2*&x-1;t=repeat(a[mod(x,2)],&y-1);put t $char%%eval(&y*3). '#';end;%

Приклад:

%let x=4;
%let y=4;
data;a;run;

Результат:

#############
#   #   #   #
#############
#   #   #   #
#############
#   #   #   #
#############
#   #   #   #
#############

Чи є якийсь онлайн-компілятор, де я міг би це перевірити? До речі, за вашим результатом ваша програма дає неправильний вихід. Дивіться результат2: Кожне поле повинно містити три горизонтальні проміжки
Spikatrix

@CoolGuy, ти маєш рацію, я цього не зрозумів, оновив свою публікацію. Ви можете спробувати SAS On Demand , це був би найменш клопіткий спосіб отримати доступ до онлайн-компілятора, не встановлюючи власний екземпляр AWS
Fried Egg

Ваше перше посилання для мене не працює. Chrome даруєDNS_PROBE_FINISHED_NXDOMAIN
Spikatrix

Спробуйте це, хоча перше посилання працює чудово для мене SAS On Demand або перейдіть за посиланням на цій сторінці до "Центру контролю" тут
Яєчня

Я не знаю чому, але поїздка до контрольного центру викликає ту саму помилку, яку згадував у попередньому коментарі: /
Spikatrix
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.