Обновить
-13
Сергей@kovserg

Инженер

0,3
Рейтинг
7
Подписчики
Отправить сообщение

Проблема тут не в копировании, а в невозможности выпустить токен, подписанный данным токеном, например на неделю, для делегирования прав. Поэтому приходиться изголяться и копировать токены, используя свистки с которых их можно скопировать.

Это программа позволяет решать оптимизационные задачи с ограничениями. Примерно так:

  • Сначала описываете модель

  • Затем ограничения

  • Просите найти решение

wgc.mzn
% Задача: Волк, Коза и Капуста

int: N = 8;
set of int: Steps = 1..N;
enum Side = { L,R };
array[Steps] of var Side: peasant;
array[Steps] of var Side: wolf;
array[Steps] of var Side: goat;
array[Steps] of var Side: green;

% Начальное состояние
constraint peasant[1]=L /\ wolf[1]=L /\ goat[1]=L /\ green[1]=L;

% Конечное состояние
constraint peasant[N]=R /\ wolf[N]=R /\ goat[N]=R /\ green[N]=R;

% Правила безопасности на каждом шаге
constraint forall(s in Steps) (
  (wolf[s]==goat[s] -> peasant[s]==wolf[s])
  /\
  (goat[s]==green[s] -> peasant[s]==goat[s])
);

% Правила переправы
constraint forall(s in 1..N-1) (
  peasant[s+1]!=peasant[s]
  /\
  (
    (wolf[s+1]!=wolf[s] /\ peasant[s]==wolf[s] /\ goat[s+1]==goat[s] /\ green[s+1]==green[s])  % Крестьянин везет волка
    \/
    (goat[s+1]!=goat[s] /\ peasant[s]==goat[s] /\ wolf[s+1]==wolf[s] /\ green[s+1]==green[s])  % Крестьянин везет козу
    \/
    (green[s+1]!=green[s] /\ peasant[s]==green[s] /\ wolf[s+1]==wolf[s] /\ goat[s+1]==goat[s]) % Крестьянин везет капусту
    \/
    (wolf[s+1]==wolf[s] /\ goat[s+1]==goat[s] /\ green[s+1]==green[s])                         % Крестьянин плывет один
  )
);

solve satisfy;

output [
    "\(s): Крестьянин=\(peasant[s]), Волк=\(wolf[s]), Коза=\(goat[s]), Капуста=\(green[s])\n" | s in Steps
];
  • И выводите результат

Running wgc.mzn

1: Крестьянин=L, Волк=L, Коза=L, Капуста=L
2: Крестьянин=R, Волк=L, Коза=R, Капуста=L
3: Крестьянин=L, Волк=L, Коза=R, Капуста=L
4: Крестьянин=R, Волк=R, Коза=R, Капуста=L
5: Крестьянин=L, Волк=R, Коза=L, Капуста=L
6: Крестьянин=R, Волк=R, Коза=L, Капуста=R
7: Крестьянин=L, Волк=R, Коза=L, Капуста=R
8: Крестьянин=R, Волк=R, Коза=R, Капуста=R
  • PROFIT

Более подробно там есть примеры, документация, обучение, песочница и обучающие курсы.

Вообще-то есть вот такой хитрый инструмент: https://www.minizinc.org/

Да вообще одной достаточно:

Чисто просто уточнить. Вы же вкурсе что можно писать не g++ main.o network.o /opt/libs/libfoo.a -lssl -o app а g++ -o app main.o @main.opt и уже в файле main.opt собрать весь мусор, не загромождая командную строку.

Здорово, хорошо. Но где сама модель?

И такой вопрос какие методы посоветуете для увеличения ресурса котактора, который будет коммутировать такую схему? При каких номиналах ёмкости будет больший КПД? Достаточно ли померить на работающем двигателе межфазное напряжение и убедиться что треугольник равносторонний? И как сильно он будет деформироваться под нагрузкой?

А если сравнить с тривиальной реализацией?

vfft.c
#include <math.h>

typedef double vfft_flt;

typedef struct vfft_t {
 int p,n;     // n=2^p
 vfft_flt* w; // [n]
 // w[2*k  ]=cos(2*PI*k/n)
 // w[2*k+1]=sin(2*PI*k/n)
 void *ctx;
 void (*scale)(void* ctx,vfft_flt a); // x[]*=a
 void (*swap )(void* ctx,int i,int j); // swap(x[i],x[j])
 void (*twist)(void* ctx,int i,int j,vfft_flt *w);
 // complex *x, t=x[i]-x[j]; x[i]=x[i]+x[j]; x[j]=t*w;
} vfft_t;

static void vfft_twist_back(vfft_t *fft) {
 int n=fft->n,p=fft->p,a=n,c,d,f,g,i,j;
 vfft_flt *w=fft->w;
 for(c=1;c<=p;c++) { d=a; a>>=1;
   for(f=0;f<a;f++) {
     for(g=0;g<n;g+=d) { i=g+f; j=i+a;
       fft->twist(fft->ctx,i,j,w+(f<<c));
     }
   }
 }
}
static void vfft_twist(vfft_t *fft) {
 int n=fft->n,p=fft->p,a=n,c,d,f,g,i,j;
 vfft_flt *w=fft->w, t[2];
  for(c=1;c<=p;c++) { d=a; a>>=1;
   for(f=0;f<a;f++) {
     for(g=0;g<n;g+=d) { i=g+f; j=i+a;
       t[0]=w[f<<c]; t[1]=-w[(f<<c)+1];
       fft->twist(fft->ctx,i,j,t);
     }
   }
 }
}
static void vfft_reorder(vfft_t *fft) {
 int p=fft->n>>1,q=fft->n-1,j=0,i,k;
 for(i=0;i<q;i++,j+=k) {
   if (i<j) fft->swap(fft->ctx,i,j);
   k=p; while(k<=j) { j-=k; k>>=1; }
 }
}
void vfft_mkw(vfft_t *fft) {
 int i, n2=fft->n/2; vfft_flt *w=fft->w, k=(vfft_flt)M_PI/n2;
 w[0]=1; w[1]=0;
 for(i=1;i<n2;i++) {
   w[2*i  ]=cos(k*i);
   w[2*i+1]=sin(k*i);
 }
}
void vfft_run(vfft_t *fft,int forward) {
 if (forward) vfft_twist(fft); else vfft_twist_back(fft);
 vfft_reorder(fft);
 if (forward) fft->scale(fft->ctx,(vfft_flt)1/fft->n);
}

//---------------------------------------------------------------------------
typedef struct vfft_vector_xy_t { int n; vfft_flt *x, *y; } vfft_vector_xy_t;
void vfft_vector_xy_twist(void* ctx,int i,int j,vfft_flt *w) {
 vfft_vector_xy_t *p; *(void**)&p=ctx;
 vfft_flt *x=p->x, *y=p->y, t[2];
 t[0]=x[i]-x[j];
 t[1]=y[i]-y[j];
 x[i]=x[i]+x[j];
 y[i]=y[i]+y[j];
 x[j]=t[0]*w[0]-t[1]*w[1];
 y[j]=t[1]*w[0]+t[0]*w[1];
}
void vfft_vector_xy_swap(void* ctx,int i,int j) {
 vfft_vector_xy_t *p; *(void**)&p=ctx;
 vfft_flt *x=p->x, *y=p->y, t;
 t=x[i];x[i]=x[j];x[j]=t;
 t=y[i];y[i]=y[j];y[j]=t;
}
void vfft_vector_xy_scale(void* ctx,vfft_flt a) {
 vfft_vector_xy_t *p; *(void**)&p=ctx; int i,n=p->n;
 vfft_flt *x=p->x, *y=p->y;
 for(i=0;i<n;i++) { x[i]*=a; y[i]*=a; }
}
//---------------------------------------------------------------------------
typedef struct vfft_vector2_t { int n; vfft_flt *x; } vfft_vector2_t;
void vfft_vector2_twist(void* ctx,int i,int j,vfft_flt *w) {
 vfft_vector2_t *p; *(void**)&p=ctx;
 vfft_flt *x=p->x, t[2]; i*=2; j*=2;
 t[0]=x[i  ]-x[j  ];
 t[1]=x[i+1]-x[j+1];
 x[i  ]+=x[j  ];
 x[i+1]+=x[j+1];
 x[j  ]=t[0]*w[0]-t[1]*w[1];
 x[j+1]=t[1]*w[0]+t[0]*w[1];
}
void vfft_vector2_swap(void* ctx,int i,int j) {
 vfft_vector2_t *p; *(void**)&p=ctx;
 vfft_flt *x=p->x, t;
 i*=2;j*=2;
 t=x[i];x[i]=x[j];x[j]=t;
 i++;j++;
 t=x[i];x[i]=x[j];x[j]=t;
}
void vfft_vector2_scale(void* ctx,vfft_flt a) {
 vfft_vector2_t *p; *(void**)&p=ctx; int i,n=2*p->n;
 vfft_flt *x=p->x;
 for(i=0;i<n;i++) x[i]*=a;
}
//---------------------------------------------------------------------------
typedef struct vfft_image_t { int n,m ; vfft_flt **x, **y; } vfft_image_t;
void vfft_image_twist(void* ctx,int i,int j,vfft_flt *w) {
 vfft_image_t *p; *(void**)&p=ctx; int k,m=p->m; vfft_flt t[2];
 vfft_flt *xi=p->x[i], *yi=p->y[i], *xj=p->x[j], *yj=p->y[j];  
 for(k=0;k<m;k++) {
   t[0]=xi[k]-xj[k];
   t[1]=yi[k]-yj[k];
   xi[k]+=xj[k];
   yi[k]+=yj[k];
   xj[k]=t[0]*w[0]-t[1]*w[1];
   yj[k]=t[1]*w[0]+t[0]*w[1];
 }
}
void vfft_image_swap(void* ctx,int i,int j) {
 vfft_image_t *p; *(void**)&p=ctx; int k,m=p->m;
 vfft_flt *xi=p->x[i], *yi=p->y[i], *xj=p->x[j], *yj=p->y[j], t;
 for(k=0;k<m;k++) {
   t=xi[k];xi[k]=xj[k];xj[k]=t;
   t=yi[k];yi[k]=yj[k];yj[k]=t;
 }
}
void vfft_image_scale(void* ctx,vfft_flt a) {
 vfft_image_t *p; *(void**)&p=ctx; int i,n=p->n, k,m=p->m;
 for(i=0;i<n;i++) {
   vfft_flt *xi=p->x[i], *yi=p->y[i];
   for(k=0;k<m;k++) {
     xi[k]*=a; yi[k]*=a;
   }
 }
}
//---------------------------------------------------------------------------

#include <stdio.h>
#include <math.h>

int main(int argc,char* argv) {
 enum { P=4, N=1<<P }; int i;
 double x[N],y[N],w[N]; vfft_t vfft[1]; vfft_vector_xy_t v[1];

 v->n=N;
 v->x=x;
 v->y=y;
 for(i=0;i<N;i++) { x[i]=cos(i*2*M_PI*3/16+0.7); y[i]=0; }

 vfft->p=P;
 vfft->n=N;
 vfft->w=w;
 vfft->ctx=v;
 vfft->scale=vfft_vector_xy_scale;
 vfft->twist=vfft_vector_xy_twist;
 vfft->swap =vfft_vector_xy_swap;
 vfft_mkw(vfft);

 printf("x: "); for(i=0;i<N;i++) printf(" %6.3f",x[i]); printf("\n");
 printf("y: "); for(i=0;i<N;i++) printf(" %6.3f",y[i]); printf("\n");

 vfft_run(vfft,1);
 printf("freq\n");
 printf("x: "); for(i=0;i<N;i++) printf(" %6.3f",x[i]); printf("\n");
 printf("y: "); for(i=0;i<N;i++) printf(" %6.3f",y[i]); printf("\n");

 vfft_run(vfft,0);
 printf("time\n");
 printf("x: "); for(i=0;i<N;i++) printf(" %6.3f",x[i]); printf("\n");
 printf("y: "); for(i=0;i<N;i++) printf(" %6.3f",y[i]); printf("\n");
 return 0;
}

А теперь главный вопрос: какую цель приследовала данная реформа?

вопросом представления чисел в уравновешенной троичной системе счисления, то скорее всего знаете про два наиболее часто встречающихся варианта: «пара бит на один трит» и «знаковые слои» (что в принципе сводится к той же паре бит на один трит, но уже при иной организации).

А что мешает использовать основание 3^5=243 и по байтам распихать, 5 тритов в 1 байт. А для ALU использовать таблицы?

И что мешает иметь внешний накопитель в рюкзаке и по wifi6 к нему цепляться?

А есть надо тонкий накопитель то есть sdcard

А что если эти 30-40 крупных центров не справятся с защитой от безпилотников? Может стоит строить множество мелких вместо нескольких огромных. И главный вопрос а для каких таких данных они вдуг понадобились? Дата центры строят под конкретные задачи, а не просто что бы были.

Ох уж эти креативные креативы:

3-ий наколенник в подарок
3-ий наколенник в подарок
вилка убийца
вилка убийца

А само государство это критическая инфрастуктура?

Было хорошо сделали лучше, лучше бы было хорошо. Принтеры хоть опять не поломали?

Напишите что пишет sudo dd if=/dev/mmcblk0 of=/dev/zero bs=4M count=100 (скорость чтения sd карты) и 7z b и clpeak и tinymembench

и как плата разогревается при перекодировании видео, с помошью ffmpeg
ffmpeg -y -loglevel warning -hide_banner -stats -i src_film.mp4 dst.mp4
watch -n 1 vcgencmd measure_temp
watch -n 1 'awk '"'"'{printf "%3.1f°C\n", $1/1000}'"'"' /sys/class/thermal/thermal_zone*/temp'

да и простабильнось wifi можно было бы рассказать, нагрузив его iperf-ом.

ps: там же еще и npu есть, и опционально ai-hats

Интересно, а почему в мобольной firefox нет поддержки прокси серверов (хотя раньше была)?

А что означает на равне с её сотрудникам?

https://www.youtube.com/watch?v=4_MaF7gKMxo

Диск убийца. Поля в десятки ГВольт на метр никого не смущают?

1
23 ...

Информация

В рейтинге
2 516-й
Откуда
Калужская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Инженер встраиваемых систем, Архитектор программного обеспечения
Старший
От 750 000 ₽
Linux
C++
PHP
Java
Docker
SQL
Hibernate
Java Spring Framework
Высоконагруженные системы