#include <seth>
https://leetcode.com/problems/binary-tree-inorder-traversal #define N 100 static int bag[N]; static struct TreeNode* stack[N]; int* inorderTraversal(struct TreeNode* root, int* m) { *m = 0; int sp = 0; while (root || sp > 0) { while (root) { …
https://leetcode.com/problems/evaluate-the-bracket-pairs-of-a-string/
#leetcode #c
#define TABLE_SIZE 262144
#define INDEX_MASK (TABLE_SIZE - 1)
static unsigned int hash_fnv1a (const char *key) {
unsigned int hash = 2166136261u;
while (*key) {
hash ^= (unsigned char)*key++;
hash *= 16777619u;
}
return hash & INDEX_MASK;
}
static int ht[TABLE_SIZE];
static void ht_insert (const char *key, int value) {
unsigned int index = hash_fnv1a(key);
while (ht[index] != -1)
index = (index + 1) & INDEX_MASK;
ht[index] = value;
}
static int ht_search (const char *key, char *** knowledge) {
unsigned int index = hash_fnv1a(key);
while (ht[index] != -1) {
if (!strcmp(key, knowledge[ht[index]][0]))
return ht[index];
index = (index + 1) & INDEX_MASK;
}
return -1;
}
static void append (char **s, int *n, int i, char c) {
if (*n <= i)
*s = realloc(*s, (*n *= 2));
(*s)[i] = c;
}
char* evaluate (char* s, char*** knowledge, int knowledgeSize, int* knowledgeColSize) {
memset(ht, -1, sizeof(int[TABLE_SIZE]));
for (int i = 0; i < knowledgeSize; ++i) ht_insert(knowledge[i][0], i);
int m = 50;
char *a = malloc(m);
int i = 0;
int t = 0;
while (s[i]) {
if (s[i] == '(') {
char key[11];
++i;
int j = 0;
for (; s[i] != ')'; ++i, ++j)
key[j] = s[i];
key[j] = 0;
++i;
if ((j = ht_search(key, knowledge)) > -1)
for (int i = 0; knowledge[j][1][i]; ++i)
append(&a, &m, t++, knowledge[j][1][i]);
else append(&a, &m, t++, '?');
}
else append(&a, &m, t++, s[i++]);
}
a[t] = 0;
return a;
}
#leetcode #c
Forwarded from Стой под стрелой (Nikita Prokopov)
По соцсетям гуляет контроверсивный ролик с недавнего Rails World, в котором DHH со сцены странным голосом произносит фразу «Rust is [an] amazing [language] if you never, ever, ever, ever, have to look at it yourself». Я, если честно, не знаю, в чем конкретно все остальные видят контроверсивность, каюсь, не слежу (ну, кроме его фашистских взглядов, понятно), но с утверждением хотел бы поспорить.
Тезис, как я понимаю, в том, что раз код теперь пишет ЛЛМ, то нам пофиг более-менее на эстетические чувства тупой машины и на то, насколько она устанет. А раз пофиг, надо язык по характеристикам выдаваемого результата выбирать. Ну и понятно, что хоть на Руби писать и приятнее, но на Расте зато программы быстрее получаются, а значит надо брать Раст. (Вот это да, программист начал думать об удобстве пользователя, а не об удобстве программиста??? Последние времена настают).
Ну, короче. Программы на Расте, конечно, быстрые получаются. НО! В чем вообще было видение Раста? В том, чтобы понаставить везде заборов и ограждений и помешать программисту сконструировать некорректную программу. Не неправильную — этих можно конструировать сколько угодно — а именно некорректную. Делает он это ценой значительного такого мозгоебства, которое запрещает, конечно, по построению некорректные программы, но также и многие корректные, которые я тебе или ты мне могли бы объяснить, но никто из нас не смог бы объяснить компилятору. Короче говоря, Раст это не просто безопасный язык, это безопасный язык с довольно неудобными ограничениями, которые предлагается терпеть во имя высшей цели — корректности. Не правильности, опять напоминаю, а корректности.
Ну вот. Понятно, зачем это нужно человеку. Человек слаб. Он ошибается тут и там. Память течет направо и налево. Сегфолт за сегфолтом, эксплойт за эксплойтом. Но это человек. Понятно, ему нужен Руби^W Раст.
А что ЛЛМ? А ЛЛМ, на самом деле, пофиг. Она мало того, что пишет сразу правильно и допускает меньше ошибок, так она еще и не ленится: может и проверить, и поревьюить, и баги поискать. И в этом смысле совсем неочевидно, что вот эти вот страховочные сетки, расставленные в Расте тут и там, обязательно помогают. Если ты сразу видишь и пишешь корректную программу, они даже скорее мешают. Без борьбы с борроу чекером можно сгенерировать корректную быструю программу в несколько раз быстрее, потом еще проверить, и в конце суммарно меньше устать.
Так что я думаю, что Раст, конечно, эмейзинг, но лучший язык для ЛЛМ это все-таки Си.
Тезис, как я понимаю, в том, что раз код теперь пишет ЛЛМ, то нам пофиг более-менее на эстетические чувства тупой машины и на то, насколько она устанет. А раз пофиг, надо язык по характеристикам выдаваемого результата выбирать. Ну и понятно, что хоть на Руби писать и приятнее, но на Расте зато программы быстрее получаются, а значит надо брать Раст. (Вот это да, программист начал думать об удобстве пользователя, а не об удобстве программиста??? Последние времена настают).
Ну, короче. Программы на Расте, конечно, быстрые получаются. НО! В чем вообще было видение Раста? В том, чтобы понаставить везде заборов и ограждений и помешать программисту сконструировать некорректную программу. Не неправильную — этих можно конструировать сколько угодно — а именно некорректную. Делает он это ценой значительного такого мозгоебства, которое запрещает, конечно, по построению некорректные программы, но также и многие корректные, которые я тебе или ты мне могли бы объяснить, но никто из нас не смог бы объяснить компилятору. Короче говоря, Раст это не просто безопасный язык, это безопасный язык с довольно неудобными ограничениями, которые предлагается терпеть во имя высшей цели — корректности. Не правильности, опять напоминаю, а корректности.
Ну вот. Понятно, зачем это нужно человеку. Человек слаб. Он ошибается тут и там. Память течет направо и налево. Сегфолт за сегфолтом, эксплойт за эксплойтом. Но это человек. Понятно, ему нужен Руби^W Раст.
А что ЛЛМ? А ЛЛМ, на самом деле, пофиг. Она мало того, что пишет сразу правильно и допускает меньше ошибок, так она еще и не ленится: может и проверить, и поревьюить, и баги поискать. И в этом смысле совсем неочевидно, что вот эти вот страховочные сетки, расставленные в Расте тут и там, обязательно помогают. Если ты сразу видишь и пишешь корректную программу, они даже скорее мешают. Без борьбы с борроу чекером можно сгенерировать корректную быструю программу в несколько раз быстрее, потом еще проверить, и в конце суммарно меньше устать.
Так что я думаю, что Раст, конечно, эмейзинг, но лучший язык для ЛЛМ это все-таки Си.
#include <seth>
https://leetcode.com/problems/evaluate-the-bracket-pairs-of-a-string/ #define TABLE_SIZE 262144 #define INDEX_MASK (TABLE_SIZE - 1) static unsigned int hash_fnv1a (const char *key) { unsigned int hash = 2166136261u; while (*key) { hash ^= (unsigned…
https://leetcode.com/problems/heaters/
#leetcode #c
int cmp (const void *a, const void *b) {
return *(const int *)a - *(const int *)b;
}
int findRadius(int* houses, int n, int* heaters, int m) {
qsort(houses, n, sizeof(int), cmp);
qsort(heaters, m, sizeof(int), cmp);
int a = 0;
for (int i = 0, j = 0; i < n; ++i) {
while (j < m - 1 && abs(houses[i] - heaters[j + 1]) <= abs(houses[i] - heaters[j]))
++j;
a = MAX(a, abs(houses[i] - heaters[j]));
}
return a;
}#leetcode #c
#include <seth>
https://leetcode.com/problems/heaters/ int cmp (const void *a, const void *b) { return *(const int *)a - *(const int *)b; } int findRadius(int* houses, int n, int* heaters, int m) { qsort(houses, n, sizeof(int), cmp); qsort(heaters, m, sizeof(int)…
https://leetcode.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/
#leetcode #c
static int a[10000];
int* maxDepthAfterSplit(char* seq, int* returnSize) {
*returnSize = 0;
for (int i = 0, d = 0; seq[i]; ++i)
a[(*returnSize)++] = (d = ~d) + seq[i] & 1;
return a;
}
#leetcode #c
Forwarded from 🍌 C++ Feed
https://github.com/dotty-staging/dotty/blob/05ad6978ec3231d8c7954a15e6e075a8645cad20/docs/_docs/reference/experimental/spec-strings.md
#scala
#scala
GitHub
dotty/docs/_docs/reference/experimental/spec-strings.md at 05ad6978ec3231d8c7954a15e6e075a8645cad20 · dotty-staging/dotty
Research platform for new language concepts and compiler technologies for Scala. - dotty-staging/dotty
Forwarded from TechFeed
🧵 Thread • FxTwitter
Steve (Builder.io) (@Steve8708)
Introducing /visual-edit - a skill to visually edit your local code like a Figma canvas
- works with any agent or model
- Figma-grade visual editing on your local apps
- apply visual updates through your coding agent
- multiplayer and collaborative
- 100%…
- works with any agent or model
- Figma-grade visual editing on your local apps
- apply visual updates through your coding agent
- multiplayer and collaborative
- 100%…
Forwarded from 🍌 C++ Feed
#include <seth>
https://leetcode.com/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/ static int a[10000]; int* maxDepthAfterSplit(char* seq, int* returnSize) { *returnSize = 0; for (int i = 0, d = 0; seq[i]; ++i) a[(*returnSize)++] = (d = ~d) + seq[i]…
https://leetcode.com/problems/generate-parentheses/
#leetcode #c
static int F[] = {1, 2, 5, 14, 42, 132, 429, 1430};
char** generateParenthesis(int n, int* returnSize) {
*returnSize = F[n - 1];
int string_size = n * 2 + 1;
int vector_size = F[n - 1] * sizeof(char *);
char *arena = malloc(vector_size + F[n - 1] * string_size);
char **vector = (char **)arena;
for (int i = 0; i < F[n - 1]; ++i) {
vector[i] = arena + vector_size + (string_size * i);
vector[i][string_size - 1] = 0;
}
int source = (1 << n) - 1;
int target = 0;
for (int i = 0; i < n; ++i) target = (target << 2) | 1;
for (int i = 0; ; ++i) {
for (int j = 0; j < 2 * n; ++j)
vector[i][j] = ((source >> (2 * n - 1 - j)) & 1) ? ')' : '(';
if (source == target)
break;
int open_count = 0, close_count = 0;
for (int i = 0; i < 2 * n; ++i) {
if ((source >> i) & 1) ++close_count;
else {
++open_count;
if (close_count > open_count) {
source |= (1 << i);
source &= ~((1 << i) - 1);
source |= ((1 << (close_count - 1)) - 1);
break;
}
}
}
}
return vector;
}#leetcode #c
Forwarded from 🍌 C++ Feed
Forwarded from opennet.ru
Создана среда, позволяющая собирать С++ приложения для Windows, Linux, macOS в браузере
Группа энтузиастов собрала SDK Xenolith, позволяющий собирать полноценные настольные приложения прямо в браузере. Система позволяет кросс-компилировать графические приложения с любой из поддерживаемых систем на любую другую. Одной из поддерживаемых систем является WebAssembly, потому приложения можно собирать для браузера, и собирать в браузере для любой другой платформы. Исходный код проекта написан на C++ и доступен под лицензией MIT.
Подробнее:
https://opennet.ru/66384/
https://opennet.me/66384/
Группа энтузиастов собрала SDK Xenolith, позволяющий собирать полноценные настольные приложения прямо в браузере. Система позволяет кросс-компилировать графические приложения с любой из поддерживаемых систем на любую другую. Одной из поддерживаемых систем является WebAssembly, потому приложения можно собирать для браузера, и собирать в браузере для любой другой платформы. Исходный код проекта написан на C++ и доступен под лицензией MIT.
Подробнее:
https://opennet.ru/66384/
https://opennet.me/66384/