es
Feedback
ToCode

ToCode

Ir al canal en Telegram

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Mostrar mรกs
1 420
Suscriptores
Sin datos24 horas
+27 dรญas
-230 dรญas
Archivo de publicaciones
ToCode
1 420
# ื”ื™ื•ื ืœืžื“ืชื™: ืกื™ืžื•ืŸ ืคื•ื ืงืฆื™ื” ื‘ืชื•ืจ Deprecated ื‘ TypeScript ื‘ืขื‘ื•ื“ื” ืขืœ ืžืขืจื›ื•ืช ืœืื•ืจืš ื–ืžืŸ ื™ื”ื™ื• ืœื ื• ืžืฆื‘ื™ื ืฉื ืฉื ื” ืืช ื“ืขืชื ื• ืœื’ื‘ื™ ืžืžืฉืง ื•ื ืจืฆื” ืœืฉื›ื ืข ืืช ื”ืžืชื›ื ืชื™ื ื”ืื—ืจื™ื ื‘ืฆื•ื•ืช (ืื• ืืช ืขืฆืžื ื• ืฉืœ ื”ืขืชื™ื“) ืœื”ืคืกื™ืง ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ืžืกื•ื™ืžืช ื•ืœืขื‘ื•ืจ ืœื”ืฉืชืžืฉ ื‘ืžืงื•ืžื” ื‘ืคื•ื ืงืฆื™ื” ืื—ืจืช - ืœืžืฉืœ ื›ื™ ื”ืคื•ื ืงืฆื™ื” ื”ืื—ืจืช ื›ื•ืœืœืช ื™ื•ืชืจ ื™ื›ื•ืœื•ืช ืื• ื›ืชื•ื‘ื” ื‘ืฆื•ืจื” ืฉื™ื•ืชืจ ืงืœ ืœื™ ืœื‘ื“ื•ืง ืื•ืชื”. ืขื ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื• VS Code ืกื™ืžื•ืŸ ื›ื–ื” ื”ื•ื ื™ื—ืกื™ืช ืคืฉื•ื˜: 1. ืื ื—ื ื• ืžื•ืกื™ืคื™ื ืืช ื”ืžื™ืœื” @deprecated ื‘ื”ืขืจืช JSDoc ืžืขืœ ื”ื’ื“ืจืช ื”ืคื•ื ืงืฆื™ื” ืื•ืชื” ืจื•ืฆื™ื ืœืกืžืŸ ื‘ืชื•ืจ Deprecated. 2. ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื›ืฉ VS Code ื™ืžืฆื ืฉื”ืฉืชืžืฉืชื™ ื‘ืื•ืชื” ืคื•ื ืงืฆื™ื” ื”ื•ื ื™ืกืžืŸ ืงื• ื‘ืืžืฆืข ืฉืœ ื”ืงื•ื“ ืฉืžืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” (strike through) ื•ื›ืฉืื ื™ ืืขื‘ื•ืจ ืขืœ ื”ืกื™ืžื•ืŸ ืขื ื”ืขื›ื‘ืจ ืื ื™ ืื•ื›ืœ ืœืจืื•ืช ืืช ื›ืœ ื”ื”ืขืจื”, ืฉื ื‘ื“ืจืš ื›ืœืœ ืชื”ื™ื” ื”ืžืœืฆื” ื‘ืžื” ืœื”ืฉืชืžืฉ ื‘ืžืงื•ื. ื“ื•ื’ืžื”? ื‘ื˜ื—. ื ืกื• ืœื”ื“ื‘ื™ืง ืืช ื”ืงื•ื“ ื”ื‘ื ื‘ืงื•ื‘ืฅ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื•ืชืจืื• ืืช ื”ืงืกื:
/**
 * @deprecated The method should not be used. Use `bar` instead.
 */
function foo(x: number) {
    return x + x;
}

function bar(x: number) {
    return x * 2;
}

const x = foo(10);
const y = bar(20);
ื•ืื ืื™ืŸ ืœื›ื ืคืจื•ื™ืงื˜ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื–ืžื™ืŸ ืืคืฉืจ ืœืจืื•ืช ืืช ื”ืืคืงื˜ ื’ื ืœื™ื™ื‘ ื‘ TypeScript Playground ื‘ืงื™ืฉื•ืจ ื”ื–ื”.

ToCode
1 420
# ืฉืชื™ ื“ืจื›ื™ื ืœื‘ื ื•ืช ืžืขืจื›ืช (ืื•: ืขื ื™ื™ืŸ ืฉืœ ื”ืขื“ืคื”) ื™ืฉ ื›ืืœื” ืฉื™ืขื“ื™ืคื• ืœื‘ื ื•ืช ืžืขืจื›ืช ืžืœืžื˜ื” ืœืžืขืœื”: ืœื”ืชื—ื™ืœ ืขื ืžืขื˜ ืžืื•ื“ ืชืœื•ื™ื•ืช, ื•ืจืง ื›ืฉืžื–ื”ื™ื ืฆื•ืจืš ืื• ื‘ืขื™ื” ืžื•ืกื™ืคื™ื ืขื•ื“ ืกืคืจื™ื” ื—ื™ืฆื•ื ื™ืช. ืื—ืจื™ื ื™ืขื“ื™ืคื• ืœืœื›ืช ื‘ื›ื™ื•ื•ืŸ ื”ื”ืคื•ืš: ืœื”ืชื—ื™ืœ ืขื ืžืฉื”ื• ื›ืžื” ืฉื™ื•ืชืจ "ืฉืœื" (ื›ืžื• ืจื™ื™ืœืก, ืื ื’ื•ืœืจ ืื• create-react-app) ื•ื›ื›ืœ ืฉืžืชืงื“ืžื™ื ื•ืžื‘ื™ื ื™ื ื˜ื•ื‘ ื™ื•ืชืจ ืืช ื”ืžืขืจื›ืช ื•ื”ืฆืจื›ื™ื ืืคืฉืจ ืœืžื—ื•ืง ืžืžื ื• ืืช ืžื” ืฉืœื ืฆืจื™ืš. ืคื—ื•ืช ื—ืฉื•ื‘ ืžื” ื”ื“ืจืš ื”ืžื•ืขื“ืคืช ืขืœื™ื›ื. ื™ื•ืชืจ ื—ืฉื•ื‘ ืœื ืœื”ื™ืชืงืข ื‘ืืžืฆืข ื”ื“ืจืš, ื›ืœื•ืžืจ ืœื ืœื”ื™ืฉืืจ ืขื ื™ื•ืชืจ ืžื“ื™ ืชืœื•ื™ื•ืช ื•ื’ื ืœื ืขื ืคื—ื•ืช ืžื“ื™. ื‘ืกื•ืคื• ืฉืœ ื™ื•ื "ืงื•ื“ ืžื™ื•ืชืจ" ื”ื•ื ื‘ืขื™ื” ื‘ื“ื™ื•ืง ื›ืžื• "ืœื”ืžืฆื™ื ืžื—ื“ืฉ ืืช ื”ื’ืœื’ืœ".

ToCode
1 420
# ื˜ื™ืค ืจื™ืกืœืงื˜ - ืฉื™ืžื• ืœื‘ ื›ืฉืืชื ืžืคืขื™ืœื™ื filter ืื• map ื‘ืชื•ืš Selector ืกืคืจื™ื™ืช Reselect ืขื•ื–ืจืช ืœื ื• ืœื‘ื ื•ืช ืคื•ื ืงืฆื™ื•ืช ืฉืžื•ืฉื›ื•ืช ืžื™ื“ืข ืž Redux Store. ืจื™ืกืœืงื˜ ืžื’ื™ืขื” ื›ื—ืœืง ืžืกืคืจื™ื™ืช Redux Toolkit ื•ื‘ืฉื‘ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื” ื‘ืคืจื•ื™ืงื˜ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืจืง ืœื™ื™ื‘ื ืืช ื”ืคื•ื ืงืฆื™ื” ื”ืžืจื›ื–ื™ืช ืฉืœื” createSelector:
import { createSelector } from "@reduxjs/toolkit";
ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืœืžื” ืฆืจื™ืš ืืช createSelector ื ืฆื˜ืจืš ืœื”ื™ื–ื›ืจ ืื™ืš ืขื•ื‘ื“ืช ื”ืคื•ื ืงืฆื™ื” useSelector ื‘ื” ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื•ืช: 1. ื‘ืชื•ืš ืงื•ื“ ืงื•ืžืคื•ื ื ื˜ื” ืื ื™ ืงื•ืจื ืœ useSelector ื›ื“ื™ "ืœื—ื‘ืจ" ื‘ื™ืŸ ืงื•ื“ ื”ืงื•ืžืคื•ื ื ื˜ื” ืœื ืชื™ื‘ ืžืกื•ื™ื ื‘ืื•ื‘ื™ืงื˜ ื” State ื‘ Redux. 2. ื”ืคืจืžื˜ืจ ืฉืื ื™ ืžืขื‘ื™ืจ ืœ useSelector ื”ื•ื ืคื•ื ืงืฆื™ื” ื‘ืขืฆืžื• - ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืืช ื›ืœ ื”ืกื˜ื™ื™ื˜ ื•ืžื—ื–ื™ืจื” ื ืชื™ื‘ ืžืกื•ื™ื, ืœื“ื•ื’ืžื” ืื ื™ ื™ื›ื•ืœ ืœืžืฆื•ื ื‘ืชื•ืš ืงื•ื“ ืงื•ืžืคื•ื ื ื˜ื” ืืช ื”ืฉื•ืจื”:
const todos = useSelector((state: AppState) => state.todos);
ื›ื“ื™ ืœื’ืฉืช ืœื›ืœ ืžืขืจืš ื” todos ืฉื™ืฉ ื‘ืกื˜ื™ื™ื˜. 3. ื›ืœ ืคืขื ืฉืžื™ืฉื”ื• ื‘ืื™ื–ืฉื”ื• ืžืงื•ื ื‘ืžืขืจื›ืช ืขื•ืฉื” dispatch, ื›ืœ ืคื•ื ืงืฆื™ื•ืช ื” useSelector ื™ืชืขื•ืจืจื• ื•ื™ืคืขื™ืœื• ืืช ื”ืคื•ื ืงืฆื™ื•ืช ืฉื”ืŸ ืงื™ื‘ืœื• ื›ืคืจืžื˜ืจื™ื. ืืœื” ืฉื™ื—ื–ื™ืจื• ืขืจืš ื—ื“ืฉ ื™ื’ืจืžื• ืœืจื™ื ื“ื•ืจ ืžื—ื“ืฉ ืฉืœ ื”ืงื•ืžืคื•ื ื ื˜ื”. ื–ื” ืื•ืžืจ ืฉื‘ื›ืœ Action ืฉื™ืฉืœื— ืœ Store, ื”ืงื•ื“ ืฉืœื™ ื™ืกืชื›ืœ ืขืœ ื”ืฉื“ื” todos ื•ื™ืฉื•ื•ื” ืื•ืชื• ืœืขืจืš ื”ืงื•ื“ื. 4. ืœืคืขืžื™ื ืื ื™ ืจื•ืฆื” ืœื”ืคืขื™ืœ ื—ื™ืฉื•ื‘ื™ื ืžื•ืจื›ื‘ื™ื ื‘ืชื•ืš useSelector. ื‘ืžืฆื‘ ื›ื–ื” ืื•ืœื™ ืœื ืžืฉืชืœื ืœื”ืคืขื™ืœ ืืช ื›ืœ ื”ื—ื™ืฉื•ื‘ ืžื—ื“ืฉ, ื‘ืžื™ื•ื—ื“ ืื ืื ื™ ื™ื•ื“ืข ื‘ืžื” ื”ื—ื™ืฉื•ื‘ ืชืœื•ื™. ืœื“ื•ื’ืžื” ื ืชื‘ื•ื ืŸ ื‘ Selector ื”ื‘ื:
const todosCount = useSelector((state: AppState) => state.todos.length);
ืื ื—ื ื• ื™ื•ื“ืขื™ื ื‘ื•ื•ื“ืื•ืช ืฉืจืง ืื state.todos ื”ืฉืชื ื” ื™ืฉ ืกื™ื›ื•ื™ ื‘ื›ืœืœ ืฉื”ืื•ืจืš ื™ืฉืชื ื” (ื’ื ืœื ื‘ื˜ื•ื—, ืื‘ืœ ื™ืฉ ืกื™ื›ื•ื™). ื›ืœ ืขื•ื“ state.todos ืžื—ื–ื™ืจ ืืช ืื•ืชื• ืขืจืš, ืื™ืŸ ื˜ืขื ืœื—ืฉื‘ ืžื—ื“ืฉ ืืช ื” length ืฉืœื• ื›ื™ ื”ื•ื ื‘ื˜ื•ื— ื™ืฆื ืื•ืชื• ื“ื‘ืจ. ื•ื–ืืช ื‘ื“ื™ื•ืง ื”ืžื˜ืจื” ืฉืœ Reselect. 5. ื”ืกืคืจื™ื” Reselect ืžืืคืฉืจืช ืœื ื• ืœืชืืจ ืืช ื”ืงืฉืจ ื‘ื™ืŸ Selector-ื™ื ืฉื•ื ื™ื, ื•ื›ืš ืœื—ืกื•ืš ื—ื™ืฉื•ื‘ื™ื ืžื™ื•ืชืจื™ื. ืกืœืงื˜ื•ืจ ื™ื—ื•ืฉื‘ ืžื—ื“ืฉ ืจืง ืื ื—ืœืง ืžื”ืชืœื•ื™ื•ืช ืฉืœื• ื”ืฉืชื ื•. ื‘ื•ืื• ื ืจืื” ืขื•ื“ ื“ื•ื’ืžื” ืงืฆืช ื™ื•ืชืจ ืžื•ืจื›ื‘ืช ืื‘ืœ ืขื“ื™ื™ืŸ ื‘ืขื•ืœื ืฉืœ Todos:
import { createSelector } from "@reduxjs/toolkit";
import { AppState } from "./store";

const todos = (state: AppState) => state.todos;

export const todosThatStartWithA = createSelector(todos, (todos) =>
  todos.filter((t) => t.message.startsWith("a"))
);

export const finishedTodosThatStartWithA = createSelector(
  todosThatStartWithA,
  (todos) => todos.filter((t) => t.completed)
);

export const numberOfFinishedTodosThatStartWithA = createSelector(
  finishedTodosThatStartWithA,
  (finishedTodosThatStartWithA) => {
    console.log(`Recalculating the length`);
    return finishedTodosThatStartWithA.length;
  }
);
ื™ืฉ ืœื™ ื›ืœ ืžื™ื ื™ ืฉืืœื•ืช ืฉืงืฉื•ืจื•ืช ืœ todos, ืœืžืฉืœ: 1. ืžื™ ื” todos ื‘ืžืขืจืš ืฉื”ื”ื•ื“ืขื” ืฉืœื”ื ืžืชื—ื™ืœื” ื‘ a ? 2. ืžื™ ื” todos ื‘ืžืขืจืš ืฉื”ื”ื•ื“ืขื” ืฉืœื”ื ืžืชื—ื™ืœื” ื‘ a, ื•ื”ื ืžืกื•ืžื ื™ื ื‘ืชื•ืจ completed ? 3. ื›ืžื” todos ื™ืฉ ื‘ืžืขืจืš ืฉื’ื ื”ื”ื•ื“ืขื” ืฉืœื”ื ืžืชื—ื™ืœื” ื‘ a ื•ื’ื ืžืกื•ืžื ื™ื ื‘ืชื•ืจ completed ? ื”ืฉื™ืžื•ืฉ ื‘ createSelector ืžืกืคืง ื“ืจืš ื ื•ื—ื” ืœืฉืœื‘ ื›ืžื” Selectors, ื•ื’ื ืœื—ืฉื‘ ืžื—ื“ืฉ ื›ืœ Selector ืจืง ื›ืฉื”ืชืœื•ื™ื•ืช ืฉืœื• ื‘ืืžืช ืžืฉืชื ื•ืช. ืื‘ืœ ื‘ื•ืื• ืœื ื ืชื‘ืœื‘ืœ, ืืคื™ืœื• Reselect ืื™ื ื• ืงื•ืกื. ืœืžืจื•ืช ืฉื”ื›ืชื™ื‘ ื ื•ืชืŸ ื”ืจื’ืฉื” ื›ืื™ืœื• ื” Selectors ืชืœื•ื™ื™ื ืื—ื“ ื‘ืฉื ื™, ื‘ืคื•ืขืœ ื‘ื’ืœืœ ืฉืฉื ื™ ื” Selectors ืฉื‘ืืžืฆืข ืžืฉืชืžืฉื™ื ื‘ filter (ื•ืœื›ืŸ ืžื™ื™ืฆืจื™ื ืžืขืจืš ื—ื“ืฉ), ืžืฆื‘ ื”ืชืœื•ื™ื•ืช ื”ื•ื ืฉื›ืœ ื” Selectors ืชืœื•ื™ื™ื ื‘ state.todos. ื‘ืจื’ืข ืฉืžืขืจืš ื” todos ืžืฉืชื ื” ืžื›ืœ ืกื™ื‘ื” ืฉื”ื™ื, ื›ืœ ื” Selectors ื™ื—ื•ืฉื‘ื• ืžื—ื“ืฉ, ื›ื™ todosThatStartWithA ื• finishedTodosThatStartWithA ืชืžื™ื“ ืžื—ื–ื™ืจื™ื ืžืขืจืš ื—ื“ืฉ. ืื ื ืจื™ืฅ ืืช ื”ืงื•ื“ ื ื’ืœื” ืฉื›ืœ ืฉื™ื ื•ื™ ื‘ todos, ื’ื ืื ื” todos ืฉื”ืฉืชื ื• ืœื ืžืชื—ื™ืœื™ื ื‘ a, ืขื“ื™ื™ืŸ ื’ืจื ืœื—ื™ืฉื•ื‘ ืžื—ื“ืฉ ืฉืœ ื” Selector ื”ืื—ืจื•ืŸ. ื‘ืงื™ืฆื•ืจ ื’ื ื›ืฉืจื™ื“ืืงืก ื ื•ืชืŸ ืœื›ื ืžืชื ื•ืช, ืชืžื™ื“ ืฆืจื™ืš ืœืฉื™ื ืœื‘ ืœืชืœื•ื™ื•ืช ืฉืœื ื• ื•ืœืจื™ื ื“ื•ืจื™ื ื›ืคื•ืœื™ื. ื–ื” ืœื ืชืžื™ื“ ื‘ืขื™ื” ืื‘ืœ ื›ืŸ ื›ื“ืื™ ืœื”ื™ื•ืช ืžื•ื“ืขื™ื ืœืžื” ืงื•ืจื”.

ToCode
1 420
# ื”ืฆืฆื” ืœืขื•ืœื ืคื•ืกื˜ GPT3 ืฉื™ืจื•ืช ื”ืฆ'ื˜ ื”ื—ื“ืฉ ืฉืœ OpenAI ืคื•ืชื— ืฆื•ื”ืจ ืœืขื•ืœื ืขืชื™ื“ื ื™ ื‘ื• (ื”ืจื‘ื” ื™ื•ืชืจ ืงืจื•ื‘ ืžืžื›ื•ื ื™ื•ืช ืžืขื•ืคืคื•ืช. ื›ื ืจืื” ื’ื ื”ืจื‘ื” ื™ื•ืชืจ ืงืจื•ื‘ ืžืžื›ื•ื ื™ื•ืช ืฉื ื•ืกืขื•ืช ืœื‘ื“) ื‘ื• ืžื—ืฉื‘ื™ื ื™ืงืจืื• ื“ืจื™ืฉื•ืช ืฉืœ ืื ืฉื™ ืžื•ืฆืจ ื•ื™ื›ืชื‘ื• ื‘ืขืฆืžื ืืช ืจื•ื‘ ื”ืงื•ื“. ื›ื‘ืจ ื”ื™ื•ื ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื‘ืงืฉ ืžืžื—ืฉื‘ ืœื›ืชื•ื‘ ืชื•ื›ื ื™ื•ืช ืคืฉื•ื˜ื•ืช ื•ื”ื•ื ื“ื™ ืžื‘ื™ืŸ ืืช ื”ืžืฉื™ืžื”, ืœืžืฉืœ ืื ื™ ื‘ื™ืงืฉืชื™ ืžืžื ื• ื‘ Playground:
Implement a program that reads a file and writes its lines backwards
ื•ืงื™ื‘ืœืชื™ ืืช ื”ืงื•ื“ ื”ื‘ื ื‘ืคื™ื™ืชื•ืŸ:
import sys

def main():
    if len(sys.argv) != 2:
        print("Usage: python reverse.py <file>")
        sys.exit(1)

    file = sys.argv[1]
    with open(file, 'r') as f:
        lines = f.readlines()
        lines.reverse()
        for line in lines:
            print(line, end='')

if __name__ == "__main__":
    main()
ื‘ืขื•ื“ ืžืกืคืจ ืฉื ื™ื ื”ื ื™ืงืจืื• ืœื‘ื“ ืืช ื›ืจื˜ื™ืกื™ ื”ื’'ื™ืจื” ืฉืœื›ื ื•ื™ืคืชืจื• ื‘ืื’ื™ื. ื”ื ื’ื ื™ื›ืชื‘ื• ืคื™ืฆ'ืจื™ื ื—ื“ืฉื™ื ื•ืื•ืœื™ ืืคื™ืœื• ืžืขืจื›ื•ืช. ื•ื›ืŸ ื”ื ื”ื•ืœื›ื™ื ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ื–ื•ืœื™ื ืžื›ืœ ืžืชื›ื ืช ืื ื•ืฉื™ ืฉืชืฆืœื™ื—ื• ืœืžืฆื•ื. ืื– ืžื”, ืœื”ื—ืœื™ืฃ ืžืงืฆื•ืข? ื ื“ืžื” ืœื™ ืฉื”ืžืกืงื ื” ื”ื™ื ื‘ื“ื™ื•ืง ื”ืคื•ื›ื”: 1. ื›ื›ืœ ืฉืžื—ืฉื‘ื™ื ื™ื›ืชื‘ื• ื—ืœืงื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ื‘ืงื•ื“ ืฉืœื ื•, ื›ืš ื”ื˜ืขื•ื™ื•ืช ืฉืœื”ื ื™ื”ื™ื• ื™ื•ืชืจ ืขื“ื™ื ื•ืช. ื›ืžื• ืฉื”ื™ื•ื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืฆื•ื•ืชื™ื ืฉืœ ืžืชื›ื ืชื™ื ื›ื“ื™ ืœืชื—ื–ืง ืื•ื˜ื•ืžืฆื™ื•ืช, ื›ืš ืื ื™ ื—ื•ืฉื‘ ืฉื ืฆื˜ืจืš ืฆื•ื•ืชื™ื ืฉืœ ืžืชื›ื ืชื™ื ืฉื™ื‘ื ื• ื•ื™ืชื—ื–ืงื• ืืช ื”ืžื•ื“ืœื™ื ืฉืื™ืชื ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ื›ื•ืชื‘ืช ืืช ื”ืงื•ื“. 2. ื›ื›ืœ ืฉื”ื‘ืื’ื™ื ืฉืœ ื”ืžื—ืฉื‘ื™ื ื™ื”ื™ื• ื™ื•ืชืจ ืžืขื ื™ื™ื ื™ื, ื ืฆื˜ืจืš ืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื›ื“ื™ ืœืžืฆื•ื ื•ืœืชืงืŸ ืื•ืชื. ื•ื›ืŸ, ื”ืžืขืจื›ื•ืช ื™ื”ื™ื• ื‘ืกื“ืจื™ ื’ื•ื“ืœ ื™ื•ืชืจ ืžื•ืจื›ื‘ื•ืช ื›ื™ ืžื—ืฉื‘ื™ื ืœื ื™ืฉื ื™ื ื•ืœื ืฆืจื™ื›ื™ื ื–ืžืŸ ืœื—ืฉื•ื‘. 3. ื›ืžื• ื‘ืžื ื•ืขื™ ื—ื™ืคื•ืฉ, ื›ืš ื’ื ื‘ืขื‘ื•ื“ื” ืขื ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ืื ื—ื ื• ื ืฆื˜ืจืš ืœื—ืฉื•ื‘ ื˜ื•ื‘ ืžื” ืื ื—ื ื• ืžื‘ืงืฉื™ื ืžื”ืžื—ืฉื‘, ื•ื”ื‘ื ื” ื˜ื›ื ื™ืช ื˜ื•ื‘ื” ืชื”ื™ื” ื”ืžืคืชื— ืœื™ืฆื™ืจืช ื‘ืงืฉื•ืช ืฉื™ื™ืฆืจื• ืชืฉื•ื‘ื•ืช ืจืœื•ื•ื ื˜ื™ื•ืช. 4. ืขื•ืœื ื”ืกื™ื™ื‘ืจ ืฉืœ ื”ื™ื•ื ื”ื•ื ื›ืœื•ื ืœืขื•ืžืช ืžื” ืฉืžืฆืคื” ืœื ื•: ืžืฆื“ ืื—ื“ ื”ืืงืจื™ื ืฉืžืฉืชื™ืœื™ื ืงืœื˜ ื–ื“ื•ื ื™ ื‘ืžื ื’ื ื•ื ื™ ืื™ืžื•ืŸ ื”ืžื•ื“ืœื™ื ื›ื“ื™ ืฉื”ืงื•ื“ ืฉืื•ืชื ืžื•ื“ืœื™ื ื™ื›ืชื‘ื• ื™ื›ื™ืœ ื“ืœืชื•ืช ืื—ื•ืจื™ื•ืช ืขื“ื™ื ื•ืช, ื•ืžืฆื“ ืฉื ื™ ืฆื•ืจืš ื”ื•ืœืš ื•ื’ื•ื‘ืจ ื‘ืžื•ืฆืจื™ ืื‘ื˜ื—ื” ืฉื™ืžืฆืื• ื•ื™ืชืงื ื• ืืช ื”ื“ืœืชื•ืช ื”ืื—ื•ืจื™ื•ืช ื”ืืœื” ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช. ื‘ื—ื–ืจื” ืœื‘ืื’ื™ื, ื‘ื“ื•ื’ืžื” ืื—ืจืช ื‘ื™ืงืฉืชื™ ืž GPT3 ืœื™ื™ืฆืจ ืœื™ Unix Pipeline ืฉืกื•ื›ื ืืช ื›ืœ ื”ืžืกืคืจื™ื ืฉื”ื•ื ืงื™ื‘ืœ ืžื”ืงืœื˜ ื”ืกื˜ื ื“ืจื˜ื™ ืขื ื”ืฉืื™ืœืชื”:
create a unix pipeline to sum all the numbers read from stdin
ื”ื•ื ื”ืฆื™ืข ืฉื ื™ ืจืขื™ื•ื ื•ืช, ื›ืœ ืื—ื“ ืขื ื”ื‘ืขื™ื•ืช ืฉืœื•:
# Option 1
cat | tr ' ' '\n' | awk '{ sum += $1 } END { print sum }'

# Option 2
cat | paste -sd+ | bc
ื‘ืจืืฉื•ืŸ ื” cut ื•ื” tr ืžื™ื•ืชืจื™ื; ื”ืฉื ื™ ืœื ืขื•ื‘ื“ ืขืœ ืžืง ื•ืื™ืชื• ื›ื ืจืื” ืขืœ ืขื•ื“ ื›ืžื” ื•ืจื™ืื ื˜ื™ื ืฉืœ ื™ื•ื ื™ืงืก ื›ื™ paste ืืฆืœื ื• ืœื ืงื•ืจืืช ืž STDIN. ื•ืœืžืจื•ืช ื”ื›ืœ ื”ืกื™ืคื•ืจ ื”ื–ื” ืžืจืฉื™ื ื•ืžืจื’ืฉ. ืื ืขื•ื“ ืœื ืงืฉืงืฉืชื ืขื GPT3 ืœื›ื• ืœื”ื™ืจืฉื ืขื›ืฉื™ื•. ื˜ื™ืจื•ืฃ ืžื” ืฉื”ื•ืœืš ืฉื.

ToCode
1 420
ืขื›ืฉื™ื• ืฉื”ื ืชื•ื ื™ื ืžื—ื•ืœืงื™ื ืœืงื‘ื•ืฆื•ืช ืืคืฉืจ ืœืื—ื“ ื›ืœ ืงื‘ื•ืฆื” ืœืฉื•ืจื” ื•ืœื”ืฉืชืžืฉ ื‘ egrep ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ืื•ืช ื”ืžืฉื•ืชืคืช ืœืฉืœื•ืฉืช ื”ืžื™ืœื™ื ื‘ืฉื•ืจื”:
$ awk '{ print } NR%3 == 0 { print "" }' demo.txt| sed 's/^$/\x0/' | tr '\n' ' ' | xargs -0 -n 1 | egrep -o '([a-zA-Z]).* .*\1.* .*\1.*' | cut -c 1

r
Z
ื”ื—ืœืคื” ื‘ืขื“ื™ืคื•ืช ื•ืกื›ื™ืžื” ื‘ื“ื™ื•ืง ื›ืžื• ื‘ื—ืœืง ื”ืงื•ื“ื ื ื•ืชื ืช ืœื ื•:
$ awk '{ print } NR%3 == 0 { print "" }' demo.txt| sed 's/^$/\x0/' | tr '\n' ' ' | xargs -0 -n 1 | egrep -o '([a-zA-Z]).* .*\1.* .*\1.*' | cut -c 1 | xargs -n 1 -I {} grep {} priority| awk '{ print $1 }' | sum

70
## ืžื” ื”ืœืื” ืื ื”ืคื•ืกื˜ ื”ื–ื” ืขืฉื” ืœื›ื ื—ืฉืง ืœืœืžื•ื“ awk ื™ื•ืชืจ ืœืขื•ืžืง, ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉื›ื‘ืจ ื›ืชื‘ืชื™ ืขืœื™ื• ืžื“ืจื™ืš ื™ื—ืกื™ืช ืžืคื•ืจื˜ ื‘ืงื™ืฉื•ืจ ื›ืืŸ: https://www.tocode.co.il/blog/2022-06-awk. ื•ืื ืืชื ืจื•ืฆื™ื ืœืจืื•ืช ืคื™ืชืจื•ื ื•ืช ื™ื•ืชืจ ืจืฆื™ื ื™ื™ื ืœืชืจื’ื™ืœื™ื ื”ืืœื”, ืื• ืœืฉืชืฃ ืคื™ืชืจื•ื ื•ืช ืฉืœื›ื, ืžื•ื–ืžื ื™ื ืœื”ืฆื˜ืจืฃ ืœืงื‘ื•ืฆื” ื‘ื˜ืœื’ืจื ืžื”ืงื™ืฉื•ืจ ื‘ืชื—ื™ืœืช ื”ืคื•ืกื˜.

ToCode
1 420
# ื•ืฉื•ื‘ awk ื”ืฆื™ืœ ืืช ื”ื™ื•ื ื”ื‘ื˜ื—ืชื™ ืœืขืฆืžื™ ืฉืื ื™ ืœื ืืขืฉื” ืืช ื›ืœ ื” Advent Of Code-ื™ื ื”ืฉื ื”, ื•ืื ื™ ื‘ืืžืช ืžืชื›ื ืŸ ืœื”ืคืกื™ืง - ืื‘ืœ ืขื“ ืฉื–ื” ื™ืงืจื” ืื ื™ ืžืงื•ื•ื” ืœื”ืฉืชืžืฉ ื‘ื—ื™ื“ื” ืฉืœ ื”ื™ื•ื ื›ื“ื™ ืœื”ืจืื•ืช ืขื•ื“ ื›ืžื” ื˜ืจื™ืงื™ื ืฉืœ ื™ื•ื ื™ืงืก ื• awk ืฉืื•ืœื™ ื™ืขื–ืจื• ืœื›ื ื’ื ืžื—ื•ืฅ ืœืืจืฅ ื”ืืœืคื™ื. ## ืžื” ืฆืจื™ืš ืœื—ืฉื‘ ืื ื™ืฉ ืœื›ื ืกื‘ืœื ื•ืช ืœื—ืคื™ืจื•ืช ืฉืœ ืืจื™ืง ื•ื•ืกื˜ืœ ืื– ืืคืฉืจ ืœืงืจื•ื ืืช ื”ืชืจื’ื™ืœ ื”ืžืงื•ืจื™ ืขื ืกื™ืคื•ืจื™ ืืœืคื™ื ื‘ืืชืจ ื”ืžืฉื—ืง. ืื‘ืœ ื‘ืงื‘ื•ืฆืช ื”ื˜ืœื’ืจื ื™ื ืชืงืฆืจ ืืช ื–ื” ื‘ืฆื•ืจื” ืžื•ืคืœืื” ืื– ืื ื™ ืคืฉื•ื˜ ืžื“ื‘ื™ืง ื›ืืŸ ืืช ื”ื ื™ืกื•ื— ืฉืœื•: ืœื›ืœ ืื•ืช ื‘ื˜ื•ื•ื— a-z ื™ืฉ ืขืจืš ืฉื ืงืจื "ืขื“ื™ืคื•ืช", ื•ื”ื•ื 1โ€“26 ื‘ื”ืชืืžื”. ื›ื "ืœ A-Z, ืขืจื›ื™ื ืฉืœ 27โ€“52 ื‘ื”ืชืืžื”. ื—ืœืง 1: ื—ืœืง ื›ืœ ืฉื•ืจื” ืœึพ2. ื‘ื™ืŸ ื”ื—ืœืง ื”ืจืืฉื•ืŸ ืœื—ืœืง ื”ืฉื ื™ ื™ืฉื ื” ืื•ืช ืžืฉื•ืชืคืช. ืžืฆื ืืช ืกื›ื•ื ื”ืขื“ื™ืคื•ื™ื•ืช ืฉืœ ื”ืื•ืชื™ื•ืช ื”ืžืฉื•ืชืคื•ืช. ื—ืœืง 2: ืขื‘ื•ืจ ื›ืœ 3 ืฉื•ืจื•ืช ืฆืžื•ื“ื•ืช ื‘ืงื•ื‘ืฅ ื”ืงืœื˜, ื‘ืœื™ ื—ืคื™ืคื•ืช (ืฉื•ืจื•ืช 1โ€“3, 4โ€“6 ื•ื›ืŸ ื”ืœืื”), ื™ืฉื ื” ืื•ืช ืžืฉื•ืชืคืช ื‘ื™ืŸ ื”ืฉื•ืจื•ืช. ืžืฆื ืืช ืกื›ื•ื ื”ืขื“ื™ืคื•ื™ื•ืช ืฉืœ ื›ืœ ื”ืื•ืชื™ื•ืช ื”ืœืœื•. ืœื“ื•ื’ืžื” ืื ื ืชื•ืŸ ื”ืงืœื˜:
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
ืื– ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื—ืœืง ื›ืœ ืฉื•ืจื” ืœ-2 ื‘ื“ื™ื•ืง ื‘ืืžืฆืข, ื•ืœืžืฆื•ื ืื™ื–ื” ืื•ืช ืžื•ืคื™ืขื” ื‘ืฉื ื™ ื”ื—ืฆืื™ื, ื•ืื– ืœืกื›ื•ื ืืช ื”ืื•ืชื™ื•ืช ืฉืžืฆืื ื• ื‘ื›ืœ ื”ืฉื•ืจื•ืช ืœืคื™ ื˜ื‘ืœืช ื”ืขื“ื™ืคื•ื™ื•ืช. ื‘ื—ืœืง ื”ืฉื ื™ ืฆืจื™ืš ืœื—ืœืง ืืช ื”ื˜ืงืกื˜ ืœืงื‘ื•ืฆื•ืช ืฉืœ ืฉืœื•ืฉ ืฉื•ืจื•ืช ื•ืœืžืฆื•ื ืืช ื”ืื•ืช ื”ืžืฉื•ืชืคืช ื‘ื™ืŸ ื”ืฉื•ืจื•ืช. ## ืขื‘ื•ื“ืช ื”ื›ื ื” ืื ื—ื ื• ื”ื•ืœื›ื™ื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ื ื”ืกื˜ื ื“ืจื˜ื™ื™ื ืฉืœ ื™ื•ื ื™ืงืก ื‘ืฉื‘ื™ืœ ืœื—ืฉื‘ ืืช ืฉื ื™ ื”ื—ืœืงื™ื, ืื‘ืœ ื‘ืฉื‘ื™ืœ ืฉื”ืฉื•ืจื•ืช ืœื ื™ื”ื™ื• ื™ื•ืชืจ ืžื“ื™ ืืจื•ื›ื•ืช ืื ื™ ืจื•ืฆื” ืœื”ื›ื™ืŸ ืฉื ื™ ืงื™ืฆื•ืจื™ื ืžืจืืฉ. ืงื•ื“ื ื›ืœ ืืช ื˜ื‘ืœืช ื”ืขื“ื™ืคื•ื™ื•ืช ืฉืœ ื›ืœ ืื•ืช ืืคืฉืจ (ื›ื“ืื™) ืœื™ืฆื•ืจ ื•ืœืฉืžื•ืจ ืœืงื•ื‘ืฅ, ื›ื“ื™ ืฉื™ื”ื™ื” ืงืœ ื™ื•ืชืจ ืœื—ืคืฉ ื‘ื”. ื–ื” ื”ืงื•ื“ ืฉื™ื•ืฆืจ ืืช ื”ืงื•ื‘ืฅ:
$ echo {a..z} {A..Z} | tr ' ' '\n'| cat -n > priority
ื›ืœ ืฉื•ืจื” ื‘ืงื•ื‘ืฅ ืžื›ื™ืœื” ืžืกืคืจ (ื”ืขื“ื™ืคื•ืช ืฉืœ ื”ืื•ืช) ื•ืื—ืจื™ื• ื”ืื•ืช ืฉืขืœื™ื” ืžื“ื‘ืจื™ื:
$ head -4 priority
     1  a
     2  b
     3  c
     4  d
ืคื™ื ื•ืง ืฉื ื™ ื”ื•ื ื” alias ืฉืงื•ืจื ืฉื•ืจื•ืช ืž stdin ื•ืžื—ืฉื‘ ืืช ืกื›ื•ื ื”ืžืกืคืจื™ื. ื”ืฉืชืžืฉืชื™ ื‘ื• ื’ื ื‘ืชืจื’ื™ืœ ืฉืœ ื”ื™ื•ื ื”ืจืืฉื•ืŸ ื•ื‘ื›ืœ ืžืงืจื” ื”ื•ื alias ืฉื˜ื•ื‘ ืฉื™ื”ื™ื” ืขืœ ื”ืžื—ืฉื‘:
$ alias sum='sed "/./s/^/+/" | tr -d "\n" | xargs echo 0 | bc '
ืžื•ื›ื ื™ื? ืื– ื™ืืœืœื” ืืคืฉืจ ืœื”ื•ืฆื™ื ืืช awk. ## ื—ืœืง 1 ื”ืืชื’ืจ ื”ืจืืฉื•ืŸ ื”ื•ื ืœื—ืœืง ื›ืœ ืฉื•ืจื” ืœ-2. ืœ awk ื™ืฉ ืคื•ื ืงืฆื™ื” ื‘ืฉื substr ืฉื‘ืฉื™ืœื•ื‘ ืขื length ืขื•ืฉื” ืืช ื”ืงืกื:
$ awk '{ print(substr($0, 0, length/2), substr($0, length/2+1)) }' demo.txt

vJrwpWtwJgWr hcsFMMfFFhFp
jqHRNqRjqzjGDLGL rsFMfFZSrLrFZsSL
PmmdzqPrV vPwwTWBwg
wMqvLMZHhHMvwLH jbvcjnnSBnvTQFn
ttgJtRGJ QctTZtZT
CrZsJsPPZsGz wwsLwLmpwMDw
ืคืฉื•ื˜ ื”ื•ืกืคืชื™ ืจื•ื•ื— ื‘ื“ื™ื•ืง ื‘ืืžืฆืข ื‘ื™ืŸ ืฉื ื™ ื”ื—ืฆืื™ื ืฉืœ ื”ืฉื•ืจื”. ืื‘ืœ ืขื›ืฉื™ื• ืื ื—ื ื• ื›ื‘ืจ ื‘ื—ืฆื™ ื”ื“ืจืš ืœืคื™ืชืจื•ืŸ. ื”ืฆืขื“ ื”ื‘ื ื”ื•ื ืœืžืฆื•ื ืืช ื”ืื•ืช ืฉืžื•ืคื™ืขื” ื‘ืฉื ื™ ื”ื—ืฆืื™ื ื•ื‘ืฉื‘ื™ืœ ื–ื” ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™:
$ awk '{ print(substr($0, 0, length/2), substr($0, length/2+1)) }' demo.txt | egrep -o '([a-zA-Z]).* .*\1' | cut -c 1

p
L
P
v
t
s
ื‘ืฉื‘ื™ืœ ืœื”ื—ืœื™ืฃ ื›ืœ ืื•ืช ื‘ืขื“ื™ืคื•ืช ืฉืœื” ื‘ืžื”ื™ืจื•ืช ื”ื™ื” ื ื—ืžื“ ืื ื”ื™ืชื” ืœื™ ื˜ื‘ืœืช Hash. ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ awk ื›ื“ื™ ืœื‘ื ื•ืช ืื—ืช, ืื‘ืœ ืื ื™ ื”ืขื“ืคืชื™ ืœืชืช ืœืžื—ืฉื‘ ืœืขื‘ื•ื“ ืงืฆืช ื™ื•ืชืจ ื•ืœื”ืฉืื™ืจ ืืช ื”ืงื•ื“ ื™ื•ืชืจ ืงืฆืจ ืื– ืคืฉื•ื˜ ืฉืœื—ืชื™ ื›ืœ ืื•ืช ืœ grep:
$ awk '{ print(substr($0, 0, length/2), substr($0, length/2+1)) }' demo.txt | egrep -o '([a-zA-Z]).* .*\1' | cut -c 1 | xargs -n 1 -I {} grep {} priority

    16  p
    38  L
    42  P
    22  v
    20  t
    19  s
ื•ื‘ืกื•ืฃ ืฉื•ื‘ awk ื›ื“ื™ ืœืงื—ืช ืจืง ืืช ื”ืขืžื•ื“ื” ื”ืจืืฉื•ื ื” ื•ืœืฉืœื•ื— ืื•ืชื” ืœ alias ื”ืกื›ื™ืžื” ืฉื™ืฆืจื ื• ื‘ื”ืชื—ืœื”:
$ awk '{ print(substr($0, 0, length/2), substr($0, length/2+1)) }' demo.txt | egrep -o '([a-zA-Z]).* .*\1' | cut -c 1 | xargs -n 1 -I {} grep {} priority| awk '{ print $1}' | sum

157
## ื—ืœืง 2 ื‘ื—ืœืง ื”ืฉื ื™ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืงื—ืช ื›ืœ 3 ืฉื•ืจื•ืช ื•ืœืžืฆื•ื ืืช ื”ืื•ืช ื”ืžืฉื•ืชืคืช ืœืฉืœื•ืฉืชืŸ. ื•ืžื™ ื™ื•ืชืจ ื˜ื•ื‘ ืž awk ื‘ืฉื‘ื™ืœ ืœื”ื•ืกื™ืฃ ืฉื•ืจื” ืจื•ื•ื— ืื—ืจื™ ื›ืœ ืฉืœื•ืฉ ืฉื•ืจื•ืช? ื”ืžืฉืชื ื” NR ืžื›ื™ืœ ืืช ืžืกืคืจ ื”ืฉื•ืจื”, ื•ืœื›ืŸ ืื ื™ ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืื ืžืกืคืจ ื”ืฉื•ืจื” ืžืชื—ืœืง ื‘-3:
$ awk '{ print } NR%3 == 0 { print "" }' demo.txt

vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg

wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw

ToCode
1 420
# ืื™ืš ืงื•ื“ ืžืชืงืœืงืœ (ื“ื•ื’ืžืช ื˜ื™ื™ืคืกืงืจื™ืคื˜ + ืจื™ืืงื˜) ื›ืชื‘ืชื™ ืœื ืžื–ืžืŸ ืงื•ืžืคื•ื ื ื˜ืช ืจื™ืืงื˜ ืฉืžืงื‘ืœืช ืจืฉื™ืžื” ืฉืœ ืคืจื™ื˜ื™ื. ืื ื™ ื™ื•ื“ืข ื˜ื™ื™ืคืกืงืจื™ืคื˜ ืื– ื”ื•ืกืคืชื™ ื’ื ื”ื’ื“ืจืช ื˜ื™ืคื•ืกื™ื ื•ื–ื” ืžื” ืฉื™ืฆื:
type PinkProps = {
    page?: number;
    itemsPerPage?: number;
    items: Array<{ id: number, text: string }>;
};

function Pink({ page=1, itemsPerPage=25, items }: PinkProps) {
    // component implementation ...
}
ืื—ืจื™ ื–ื” ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืขื•ื“ ืงื•ืžืคื•ื ื ื˜ื” ืื‘ืœ ื–ื• ื›ื‘ืจ ืฆืจื™ื›ื” ืœืงื‘ืœ ืจืฉื™ืžืช ืคืจื™ื˜ื™ื ืžืกื•ื’ ืื—ืจ. ืืช page ื• itemsPerPage ืžืฉืื™ืจื™ื ืื•ืชื• ื“ื‘ืจ. ื ื•, ืื ื™ ื™ื•ื“ืข ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื—ืฉื‘ืชื™ ื•ื›ืชื‘ืชื™ ืืช ื”ืงื•ื“ ื”ื‘ื:
type OrangeProps = Pick<PinkProps, "page"|"itemsPerPage"> & {
    items: Array<{ id: number, visible: boolean }>
};

function Orange({ page=1, itemsPerPage=25, items}: OrangeProps) {
    // component implementation ...
}
ื•ืžืคื” ืœืฉื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ื’ื ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืคืจื™ื˜ ื™ื—ื™ื“ ืžืชื•ืš ืžืขืจืš ื”ืคืจื™ื˜ื™ื ื‘ OrangeProps. ืฉื•ื ื‘ืขื™ื” ื—ืฉื‘ืชื™, ืื ื™ ื™ื•ื“ืข ื˜ื™ื™ืคืกืงืจื™ืคื˜:
function isValid(item: OrangeProps['items'][number]) {
    // validate the item from orange props
}
ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ืืช ื›ืœ ื”ื’ื“ืจื•ืช ื”ื˜ื™ืคื•ืกื™ื ื‘ืžื‘ื˜ ืื—ื“:
type PinkProps = {
    page?: number;
    itemsPerPage?: number;
    items: Array<{ id: number, text: string }>;
};

type OrangeProps = Pick<PinkProps, "page"|"itemsPerPage"> & {
    items: Array<{ id: number, visible: boolean }>
};

function isValid(item: OrangeProps['items'][number]) {
    // validate the item from orange props
}
ืื ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื›ืชื•ื‘ ืชื•ื›ื ื™ืช ืžืืคืก ืื™ืŸ ืกื™ื›ื•ื™ ืฉื”ื™ื™ืชื™ ืžืชื—ื™ืœ ืขื ื”ื”ื’ื“ืจื•ืช ื”ืืœื”. ืงืœ ืœืจืื•ืช ืฉืืช ื”ื”ื’ื“ืจื•ืช ืฉืงืฉื•ืจื•ืช ืœื“ืคื™ื ืฉื•ื•ื” ืœื”ื•ืฆื™ื ืœื˜ื™ืคื•ืก ืื—ื“, ืืช ืฉื ื™ ืกื•ื’ื™ ื”ืคืจื™ื˜ื™ื ืœื˜ื™ืคื•ืก ืฉื ื™ ื•ืื– ืœืงื‘ืœ:
type Paginated = {
    page?: number;
    itemsPerPage?: number;
}

type TextItem = {
    id: number;
    text: string;
}

type ToggleItem = {
    id: number;
    visible: boolean;
}

type PinkProps = Paginated & {
    items: Array<TextItem>;
};

type OrangeProps = Paginated & {
    items: Array<ToggleItem>;
}

function isValid(item: ToggleItem) {
    // validate the item from orange props
}

function Pink({ page=1, itemsPerPage=25, items }: PinkProps) {}


function Orange({ page=1, itemsPerPage=25, items}: OrangeProps) {}

ืืจื•ืš ื™ื•ืชืจ, ื›ืŸ, ืื‘ืœ ื”ืจื‘ื” ื™ื•ืชืจ ื‘ืจื•ืจ ื•ืงืœ ืœื”ืจื—ื‘ื”. ืœืฉื ื•ืช ืงืฆืช ืงื•ื“ ื›ืœ ืคืขื ืจืง ื‘ืฉื‘ื™ืœ ืœื”ื•ืกื™ืฃ ืืช ื”ืคื™ืฆ'ืจ ื”ื—ื“ืฉ ื–ื• ืœื ื’ื™ืฉื” ืžืกืคื™ืง ื˜ื•ื‘ื”. ื—ื™ื™ื‘ื™ื ืœื”ื•ืกื™ืฃ ืœื” ื ืงื•ื“ื•ืช ื‘ืงืจื” ื‘ื”ืŸ ืื ื—ื ื• ืžืืจื’ื ื™ื ืžื—ื“ืฉ ืืช ื”ืงื•ื“ ื›ืื™ืœื• ืžืชื—ื™ืœื™ื ืžืืคืก. ืื—ืจืช ื›ืฉื ืฉื™ื ืœื‘ ืฉื“ื‘ืจื™ื ืžืงื•ืœืงืœื™ื ื–ื” ื›ื‘ืจ ืขืœื•ืœ ืœื”ื™ื•ืช ืžืื•ื—ืจ ืžื“ื™.

ToCode
1 420
ื”ื™ื›ืจื•ืช ืขื ืฉืชื™ ื”ืฉื™ื˜ื•ืช ืœื”ืคื•ืš ื‘ืœื•ืงื™ื ืœืฉื•ืจื•ืช (awk ื• xargs -0) ืขื•ื–ืจืช ืœื›ืชื•ื‘ Pipelines ื˜ื•ื‘ื™ื ื™ื•ืชืจ, ื’ื ื‘ืืชื’ืจื™ื ืืžื™ืชื™ื™ื ืžื—ื•ืฅ ืœ Advent Of Code.

ToCode
1 420
# ืคื™ืชืจื•ืŸ Advent Of Code ื™ื•ื 1 ื‘ืขื–ืจืช ื™ื•ื ื™ืงืก ื›ืžื• ื›ืœ ืฉื ื” ื‘ื“ืฆืžื‘ืจ ื”ื—ื™ื“ื•ืช ืฉืœ Advent Of Code ื”ืชื—ื™ืœื• ืœื”ืชืคืจืกื ื”ื™ื•ื. ืื•ืžื ื ืขื“ื™ื™ืŸ ืœื ื”ื—ืœื˜ืชื™ ื‘ืื™ื–ื• ืฉืคื” ืœื”ืฉืชืžืฉ ืื• ืืคื™ืœื• ืื ืื ื™ ืžืชื›ื ืŸ ืœืคืชื•ืจ ืืช ื›ื•ืœืŸ, ืื‘ืœ ื”ื—ื™ื“ื” ื”ืจืืฉื•ื ื” ืฉื”ืชืคืจืกืžื” ื”ื–ื›ื™ืจื” ืœื™ ืฉืœืคืขืžื™ื ื”ื›ื™ ื›ื™ืฃ ืœืงื—ืช ื›ืœื™ื ืคืฉื•ื˜ื™ื ืœืžืฉื™ืžื•ืช ืคืฉื•ื˜ื•ืช. ื‘ืงื™ืฆื•ืจ ื‘ื•ืื• ื ืจืื” ืื™ืš ืœืคืชื•ืจ ืืช Advent Of Code 2022 Day 1 ื‘ืœื™ ืœืฆืืช ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ## ื”ืžืฉื™ืžื”: ื—ื™ืฉื•ื‘ ืงืœื•ืจื™ื•ืช ื‘ืืชื’ืจ ืงื™ื‘ืœื ื• ืจืฉื™ืžืช ืžืกืคืจื™ื ืฉืžื™ื™ืฆื’ืช ื›ืžื” ืงืœื•ืจื™ื•ืช ืกื•ื—ื‘ ื”ืืœืฃ ื”ืจืืฉื•ืŸ, ืื—ืจื™ื” ืฉื•ืจื” ืจื•ื•ื— ื•ืื– ืขื•ื“ ืจืฉื™ืžืช ืžืกืคืจื™ื ืฉืžืชืื™ืžื” ืœืงืœื•ืจื™ื•ืช ืฉืกื•ื—ื‘ ื”ืืœืฃ ื”ืฉื ื™, ื•ืื– ืขื•ื“ ืฉื•ืจืช ืจื•ื•ื— ื•ืขื•ื“ ืจืฉื™ืžืช ืžืกืคืจื™ื ื•ื›ื›ื” ื”ืœืื”. ื‘ืงื™ืฆื•ืจ ืงืœื˜ ื›ื–ื”:
1000
2000
3000

4000

5000
6000

7000
8000
9000

10000
ื•ื™ืฉ ืœื ื• ืฉืชื™ ืžืฉื™ืžื•ืช: 1. ืื ืกื•ื›ืžื™ื ืืช ืจืฉื™ืžืช ื”ืžืกืคืจื™ื ื‘ื›ืœ ืงื‘ื•ืฆื”, ืžื”ื• ื”ืกื›ื•ื ื”ื’ื‘ื•ื” ื‘ื™ื•ืชืจ ืžื›ืœ ื”ืงื‘ื•ืฆื•ืช (ื‘ืงืœื˜ ื”ื“ื•ื’ืžื” ื–ื” 24000, ืกื›ื•ื ื”ืงื‘ื•ืฆื” ื”ืจื‘ื™ืขื™ืช) 2. ืžื”ื ืฉืœื•ืฉืช ื”ืกื›ื•ืžื™ื ื”ื’ื‘ื•ื”ื™ื ื‘ื™ื•ืชืจ ืžื›ืœ ื”ืงื‘ื•ืฆื•ืช (ื‘ืงืœื˜ ื”ื“ื•ื’ืžื” ื–ื” 45000, ื”ืกื›ื•ื ืฉืœ 24000, 11000 ื•-10000). ## ืื™ืš ืžื—ืฉื‘ื™ื ืกื›ื•ืžื™ื ื‘ื™ื•ื ื™ืงืก ื”ืคืงื•ื“ื” bc ื”ื™ื ื“ืจืš ืงืœื” ืœื—ืฉื‘ ืกื›ื•ื ืฉืœ ืžืกืคืจื™ื. ื›ืŸ ืฆืจื™ืš ืœืขืฉื•ืช ืงืฆืช ืžื ื™ืคื•ืœืฆื™ื•ืช ืขืœ ื”ืงืœื˜ ื›ื“ื™ ืฉื™ืชืื™ื ืœื”, ืื‘ืœ ื‘ื’ื“ื•ืœ bc ืžืงื‘ืœืช ืชืจื’ื™ืœ ื—ืฉื‘ื•ื ื™ ื“ืจืš stdin ื•ืคื•ืชืจืช ืื•ืชื•. ื›ื›ื” ื™ื”ื™ื” ืœื ื•:
$ echo 2 + 3 | bc
5

$ echo 5 + 7 + 10 | bc
22
ื‘ืขื–ืจืช bc ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ alias ืงื˜ืŸ ืฉืœื•ืงื— ืจืฉื™ืžืช ืžืกืคืจื™ื ืž stdin ื•ืžื“ืคื™ืก ืืช ืกื›ื•ืžื:
alias sum='sed "/./s/^/+/" | tr -d "\n" | xargs echo 0 | bc '
ื” alias ืžื•ืกื™ืฃ ืกื™ืžืŸ ืคืœื•ืก ืœืคื ื™ ื›ืœ ืžืกืคืจ (ืžื“ืœื’ ืขืœ ืฉื•ืจื•ืช ืจื™ืงื•ืช), ืื—ืจื™ ื–ื” ืžื•ื—ืง ืืช ื›ืœ ื”ื™ืจื™ื“ื•ืช ืฉื•ืจื” ื›ื“ื™ ืฉื›ืœ ื”ืžืกืคืจื™ื ื™ื™ื›ืชื‘ื• ืœืฉื•ืจื” ืื—ืช, ืžื•ืกื™ืฃ 0 ื‘ื”ืชื—ืœื” ื•ืžื“ืคื™ืก ืืช ื”ืฉื•ืจื” ืœ stdout ื‘ืขื–ืจืช echo, ื•ืžืฉื ืœ bc ื›ื“ื™ ืœื”ื“ืคื™ืก ืืช ื”ืกื›ื•ื. ## ื‘ื—ื–ืจื” ืœืชืจื’ื™ืœ ืขื›ืฉื™ื• ืฉืื ื—ื ื• ื™ื•ื“ืขื™ื ืื™ืš ืขื•ื‘ื“ ื—ื™ื‘ื•ืจ ืขื“ื™ื™ืŸ ื ืฉืืจ ืœื ื• ืœื—ื‘ืจ ื›ืœ ืงื‘ื•ืฆื” ื‘ื ืคืจื“. ืžืื—ืจ ืฉื›ืœ ืงื‘ื•ืฆื” ืžื•ืคืจื“ืช ืžื”ืงื‘ื•ืฆื” ืฉืื—ืจื™ื” ื‘ืฉื•ืจื” ืจื™ืงื”, ื ืฆื˜ืจืš ืœื”ื—ืœื™ืฃ ื›ืœ "ืจืฆืฃ ืฉืœ ืฉื•ืจื•ืช ืขื“ ื”ืฉื•ืจื” ื”ืจื™ืงื”" ื‘ืชืจื’ื™ืœ ื—ื™ื‘ื•ืจ ืžืชืื™ื. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ื ืจืฆื” ืœื”ืคื•ืš ืืช ื”ืงืœื˜ ืœ:
0 +1000 +2000 +3000
0 +4000
0 +5000 +6000
0 +7000 +8000 +9000
0 +10000
ื“ืจืš ืื—ืช ืœื”ืคื•ืš ืงื‘ื•ืฆื•ืช ืœืฉื•ืจื•ืช ื”ื™ื ืœื”ืคื•ืš ื›ืœ ืฉื•ืจื” ืจื™ืงื” ืœืชื• Null (ื›ืœื•ืžืจ \0), ื•ืื– ืœื”ืฉืชืžืฉ ื‘ xargs ื›ื“ื™ ืœืงื—ืช ืืช ื›ืœ ื”ืืจื’ื•ืžื ื˜ื™ื ืขื“ ืชื• ื” Null. ืœืžืฉืœ ื‘ืฉื‘ื™ืœ ืœื”ื“ืคื™ืก ืืช ื”ื˜ืงืกื˜ Elf Group ืœืคื ื™ ื›ืœ ืงื‘ื•ืฆื” ืื ื™ ื™ื›ื•ืœ ืœื”ืคืขื™ืœ:
$ cat input.txt| sed 's/^$/\x0/' | xargs -0 -n 1 echo "Elf Group: "
ืื‘ืœ ืื ื™ ืœื ืจื•ืฆื” ืœื”ื“ืคื™ืก ืืช ื”ืชื—ื™ืœื™ืช Elf Group ืืœื ืœื—ืฉื‘ ืกื›ื•ื - ื•ื‘ืฉื‘ื™ืœ ื–ื” ืฆืจื™ืš ืœื”ื™ื•ืช ืงืฆืช ื™ื•ืชืจ ื™ืฆื™ืจืชื™ื™ื: 1. ื ืจืฆื” ืœื”ื•ืกื™ืฃ ืกื™ืžืŸ + ื‘ืชื—ื™ืœืช ื›ืœ ืฉื•ืจื” ืœื ืจื™ืงื” ื‘ืงื‘ื•ืฆื”. 2. ื ืจืฆื” ืœืžื—ื•ืง ืืช ื”ื™ืจื™ื“ื•ืช ืฉื•ืจื” (ื›ื“ื™ ืœืงื‘ืœ ืฉื•ืจื” ืื—ืช ืืจื•ื›ื” ืฉืžื™ื™ืฆื’ืช ืชืจื’ื™ืœ). 3. ื ืจืฆื” ืœื”ื“ืคื™ืก 0 ื‘ืชื—ื™ืœืช ื”ืฉื•ืจื”. ื” Pipeline ืฉืœ ื–ื” ื ืจืื” ื›ืš:
$ cat input.txt| sed 's/^$/\x0/' | sed '/^[0-9]/s/^/+/' | tr -d '\n' | xargs -0 -n 1 echo 0

0 +1000+2000+3000
0 +4000
0 +5000+6000
0 +7000+8000+9000
0 +10000
ื•ืืช ื–ื” ืืคืฉืจ ืœืฉืœื•ื— ืœ bc ื›ื“ื™ ืœื”ื—ืœื™ืฃ ื›ืœ ืฉื•ืจื” ื‘ืชื•ืฆืืช ื”ืชืจื’ื™ืœ, ื›ืœื•ืžืจ ื‘ืกื›ื•ื ืฉืœื”:
$ cat input.txt| sed 's/^$/\x0/' | sed '/^[0-9]/s/^/+/' | tr -d '\n' | xargs -0 -n 1 echo 0 | bc

6000
4000
11000
24000
10000
ื”ืฉื•ืจื” ืขื ื”ืกื›ื•ื ื”ื›ื™ ื’ื“ื•ืœ? ื–ื” ืคืฉื•ื˜ sort ื• tail:
$ cat input.txt| sed 's/^$/\x0/' | sed '/^[0-9]/s/^/+/' | tr -d '\n' | xargs -0 -n 1 echo 0 | bc | so
rt -n | tail -1

24000
ืกื›ื•ื ืฉืœื•ืฉืช ื”ืฉื•ืจื•ืช ื”ื’ื“ื•ืœื•ืช ื‘ื™ื•ืชืจ? ืคื” ืืคืฉืจ ืœืฉืœื‘ ืืช ื” alias ืฉื™ืฆืจื ื• ื‘ืชื—ื™ืœืช ื”ืคื•ืกื˜:
$ cat input.txt| sed 's/^$/\x0/' | sed '/^[0-9]/s/^/+/' | tr -d '\n' | xargs -0 -n 1 echo 0 | bc | sort -n | tail -3 | sum

45000
## ื›ื™ื•ื•ืŸ ื ื•ืกืฃ - awk ื›ืœื™ ื ื•ืกืฃ ืฉืชืžื™ื“ ืขื•ื–ืจ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ื”ื•ื awk. ืžืื—ืจ ื•ืœ awk ื™ืฉ ื›ื‘ืจ ืชื—ื‘ื™ืจ ืœื”ื’ื“ืจืช ืžืฉืชื ื™ื ืื ื™ ื™ื›ื•ืœ ืคืฉื•ื˜ ืœืกื›ื•ื ืืช ื›ืœ ื”ืžืกืคืจื™ื ืขื“ ื”ืฉื•ืจื” ื”ืจื™ืงื”, ื•ื›ืฉืื ื™ ืžื’ื™ืข ืืœื™ื” ืœืืคืก ืืช ื”ืกื›ื•ื. ื–ืืช ื”ื”ืชื—ืœื”:
cat input.txt| awk '/^$/ { print sum; sum = 0 } { sum += $1 }'
ื•ืฉื•ื‘ ื‘ืฉื‘ื™ืœ ื”ืกื›ื•ื ื”ื’ื‘ื•ื” ื‘ื™ื•ืชืจ ืžืกืคื™ืง ืœื”ื•ืกื™ืฃ sort ื• tail:
$ cat input.txt| awk '/^$/ { print sum; sum = 0 } { sum += $1 }' | sort -n | tail -1

24000
ื•ื‘ืฉื‘ื™ืœ ืกื›ื•ื ืฉืœื•ืฉืช ื”ื’ื“ื•ืœื™ื ื‘ื™ื•ืชืจ ืื ื™ ืžืฉืœื‘ ืืช ื” alias ืžืชื—ื™ืœืช ื”ืคื•ืกื˜:
$ cat input.txt| awk '/^$/ { print sum; sum = 0 } { sum += $1 }' | sort -n | tail -3 | sum

45000

ToCode
1 420
ื”ื™ ื—ื‘ืจื™ื ื‘ืฉืขื” 10 ื ื™ืคื’ืฉ ื‘ื–ื•ื ืœื•ื•ื‘ื™ื ืจ ื˜ื™ื™ืคืกืงืจื™ืคื˜, ืืฉืœื— ืคื” ืœื™ื ืง ื›ืžื” ื“ืงื•ืช ืœืคื ื™ ืœืžืงืจื” ืฉืœื ื”ืกืคืงืชื ืœื”ื™ืจืฉื ื“ืจืš ื”ืžืขืจื›ืช

ToCode
1 420
# ืื™ืคื” ื”ื™ื™ืช ืขื“ ืขื›ืฉื™ื•? ืœื›ืœ ื‘ืขื™ื” ื‘ืชื•ื›ื ื” ื™ืฉ ืžืกืคืจ ืคื™ืชืจื•ื ื•ืช, ื—ืœืงื ื˜ื•ื‘ื™ื ืžืื—ืจื™ื. ื›ืฉืื ื—ื ื• ืžืกืชื›ืœื™ื ืขืœ ืžืขืจื›ืช ืฉื›ื‘ืจ ืขื•ื‘ื“ืช ื•ืžื’ืœื™ื ื“ืจืš ื—ื“ืฉื” ื˜ื•ื‘ื” ื™ื•ืชืจ, ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉื›ื“ืื™ ืœืขืฉื•ืช ื”ื•ื Refactoring ืœืงื•ื“ ื›ื“ื™ ืœืฉืœื‘ ืืช ื”ื“ืจืš ื”ื—ื“ืฉื” ื•ืœื•ื•ื“ื ืฉื”ื™ื ื‘ืืžืช ื˜ื•ื‘ื” ื™ื•ืชืจ. ื”ื“ื‘ืจ ื”ืฉื ื™ ื•ื”ื—ืฉื•ื‘ ื™ื•ืชืจ ื”ื•ื ืœื”ื‘ื™ืŸ ืœืžื” ืœื ืจืื™ืช ืืช ื”ื“ืจืš ื”ื˜ื•ื‘ื” ื™ื•ืชืจ ืงื•ื“ื? ืื™ืคื” ื›ื“ืื™ ืœื—ืคืฉ? ื•ืื™ื–ื” ื“ื‘ืจื™ื ื›ื“ืื™ ืœืฉื ื•ืช ื‘ื”ืชื ื”ืœื•ืช ื”ื™ื•ื ื™ื•ืžื™ืช ื›ื“ื™ ืœื”ื™ื—ืฉืฃ ืœื™ื•ืชืจ ื“ืจื›ื™ื ื˜ื•ื‘ื•ืช? ืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ืžื—ืคืฉื™ื ื›ืœ ื”ื–ืžืŸ ืคื™ืชืจื•ื ื•ืช ื™ืขื™ืœื™ื ื™ื•ืชืจ, ื›ื™ ืคื™ืชืจื•ื ื•ืช ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื ื•ืชื ื™ื ื™ื•ืชืจ ืขืจืš - ืœื ืจืง ืฉื”ื ื™ืฉืคืจื• ืืช ื”ืงื•ื“ ื”ืงื™ื™ื, ื”ื ื’ื ื™ื”ืคื›ื• ืืช ื”ื‘ืขื™ื•ืช ื”ื‘ืื•ืช ืœืงืœื•ืช ื™ื•ืชืจ ืœืคื™ืชืจื•ืŸ.

ToCode
1 420
ืฉื•ื‘ ืืชื ื™ื›ื•ืœื™ื ืœืฉื—ืง ืขื ื”ืงื•ื“ ื‘ืื•ืชื• ืงื•ื“ืกื ื“ื‘ื•ืงืก ื‘ืงื™ืฉื•ืจ: https://codesandbox.io/s/damp-rain-q71w55?file=/src/App.js ื›ืฉื ืœื—ืฅ ืขืœ ื”ื›ืคืชื•ืจ ื”ื—ื“ืฉ ืื ื—ื ื• ืจื•ืื™ื ืฉืงื™ื‘ืœื ื• ื”ื•ื“ืขื•ืช render ืจืง ืžื”ืคืจื™ื˜ื™ื ืฉื‘ืืžืช ื”ืฉืชื ื• (ืฉื ื™ ืคืจื™ื˜ื™ื, ืื—ื“ ืื™ื‘ื“ ืืช ื”ืชื•ืกืคืช ืœื˜ืงืกื˜ ื•ื”ืฉื ื™ ืงื™ื‘ืœ ืชื•ืกืคืช). ื‘ืชื•ื›ื ื™ื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ, ื›ืฉืฉืžื™ืจื” ืขืœ ื–ื”ื•ืช References ื™ื›ื•ืœื” ืœื—ืกื•ืš ืœื›ื ืืคืงื˜ื™ื, ืจื ื“ืจื™ื ื•ืขื•ื“ ื‘ืœืื’ื ื™ื, ื˜ื›ื ื™ืงื” ื›ื–ื• ืชื•ื›ืœ ืœืฉืžื•ืจ ืขืœ ื”ืงื•ื“ ืฉืœื›ื ืขืงื‘ื™ ื’ื ืื—ืจื™ ืงื‘ืœืช ืขื“ื›ื•ื ื™ื ืžื”ืฉืจืช.

ToCode - Estadรญsticas y analรญtica del canal de Telegram @tocodeil