ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
1 419
# ืงืืืคืื ืชืืื ืืช Qt ื Web Assembly
ืืคื ื ืืื ืืืื ืฉืืืจืจื ืืืจืกื 6.4 ืฉื Qt ืืืขืื ืื ืืคืืฆ'ืจ ืืื ืืืืื ืฉื ืืื ืืชืืืื ืืืืื ืืช ื Web Assembly. ืืืื ืื ืฉืืืจ ืงืืื ืืขืืื ื Qt ืืื:
1. ืชืืืื ืืืื ืฉื Qt Creator ื Web Assembly, ืื ืฉืืชื ืืืืืื ืืงืืช ืื ืคืจืืืงื Qt ืฉืืืจ ืืฉ ืืื (ืืืืื'ืืก ืื QML) ืืคืฉืื ืืงืืคื ืืืชื ืืงืืืฅ wasm.
2. ืืืจืืื ืฉื ืื ืืงืื ืฉืืกืืื ืื ืฉืืื ืื ืืืืฆืจืช ืืื ืชืืงืืืช dist ืขื ืงืืืฅ HTML ืจืืฉื ืืงืืฆื JavaScript, ืื ืฉืื ืื ืฉืฆืจืื ืืขืฉืืช ืื ืืืขืื ืืช ืืงืืืฅ HTML ืืืชืืื ืืช ืจืฆื ืืืคืืคื, ืื ืจืืืช ืืืืืง ืืื ืฉืืื ื ืจืืชื ืืืคืืืงืฆืืืช Desktop.
3. ืืืืืฉ ืฉื ืงืื ืขืืืฃ ืกืืื ืื ืื ืื ืื ืฉื ืืืคืืคื, ืืืฉื ืืฉืืื ืืงืจืื ืงืืฆืื, ืืคืชืื ืืงืฉืืช ืจืฉืช ืื ืื ืืืจ ืืืจ ืฉืืคืืืงืฆืืืช Desktop ืืืชื ืขืืฉื. ืื ืขืืฉืื ืงืจืืื ืืคืื ืงืฆืื
QFileDialog::getOpenFileContent ืืขืฆื ืืฉืชืืฉืช ืืืืืืืช ืฉื ืืืคืืคื ืืื ืืืงืคืืฅ ืืืฉืชืืฉ ืืืื ืืืืืจืช ืงืืืฅ ืืืืขืื ืืืชื.
ืืจืืข ืืืืกืจืื ืืืจืืื ืืื ืืืื ืืงืืฆืื. ืชืืื ืืช Qt ืคืฉืืื ืฉืื ืืชื ืืงืืืคืืชื ื Web Assembly (ืงืื ืืืืฉื ืืคืืกื) ืืืืขื ื 19 ืืื ืืืจื ืงืืืคืืืฆืื. ืื ื ืืงืืื ืฉืืืืจืกืืืช ืืขืชืืืืืช ืฉื Qt ืื ืืขืืื ืขื ืื ืืืฆืืืื ืืจืืช ืืืกืคืจ ืื ืกืคืจืชื ืฉื ืืืืช.
ืืื? ืืจืืจ. ืื ืงืื Qt ืฉืื ืืชื ื Qt Creator. ืืชืืื ืืช ืืื ืืกื ืืื ืงืืืฅ ืืื main.cpp ืฉืืื ื ืืื ื ืืืืฆืืช:
#include <QApplication>
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
auto clicked = 0;
auto btn = new QPushButton("Add 1");
auto result = new QLabel(QString("Button clicked %1 times").arg(clicked));
w.setLayout(new QVBoxLayout());
w.layout()->addWidget(new QLabel("Hello World"));
w.layout()->addWidget(result);
w.layout()->addWidget(btn);
QObject::connect(btn, &QPushButton::clicked, [&]() {
clicked++;
result->setText(QString("Button clicked %1 times").arg(clicked));
});
w.show();
return a.exec();
}
ืืฉ ืคื ืืืื, ืืชืืื ืฉืชื ืชืืืืช ืืงืกื ืืืคืชืืจ, ืืื ืคืขื ืฉืืืืฆืื ืขื ืืืคืชืืจ ืขืจื ืืืฉืชื ื ืขืืื ื 1 ืืืืงืกื ืืชืืื ืืฉืชื ื. ืืืงืื ืขื ืืืกื ืืืืืง ืืื ืืืคืชืืจ ืืชืืืืช ืืืงืกื ืืืจืืืืื ืืืืื ืืคื ืืืืืื ืฉื Qt ืืื ืืืื ืืช ืื ืืืืื.
ืืืจื ืงืืืคืืืฆืื ืืงืืืื ืงืืืฅ wasm ืขื ืงื, ืฉื ื ืงืืฆื js ืืงืืืฅ html. ืืคืฉืจ ืืจืืืช ืืช ืืืื ืืจืืคื ืฉืืฆืจืชื ืืื:
https://github.com/ynonp/qt-wasm-demo/
ืืืื ืจืฅ ืืืืืืื ืคืืื'ืก ืืงืืฉืืจ ืืื:
https://ynonp.github.io/qt-wasm-demo/
ืคืฉืื ืชืืืฆื ืขื ืืืคืชืืจ ืฉืืชืืชืืช ืืืกื ืืชืจืื ืืช ืืืงืกื ืืชืืื ืืฉืชื ื.
ืื ืื ืืชื ืจืืฆืื ืืฉืืง ืขื ืืืืจืกื ืื ืื ืฉืฆืจืื ืื ืืืืจืื ืืืืชืงืื ืืช Qt ืืืงืืฉืืจ ืืื:
https://www.qt.io/download-qt-installer
ืืืืชืงืื ืืช Emscripten ืืืงืืฉืืจ ืืื:
https://emscripten.org/docs/getting_started/downloads.html
ื .ื. ืืืืื ืช ืจืืฉืืื ืืื ืฉืื ื ืืืื ืืฉืืื ืืื ืืช ืืคืืืงืฆืืืช ืืกืืจืืืช ืืฉ ืืงื ืืช ืจืืฉืืื ืืกืืจื ืืืื ืฉืืงืืืคืืืฆืื ื Web Assembly ืืื ืกืืืืช. ืขืืฉื ืจืืฉื ืฉืื ืขืืืืื ืขื ืืคืฉืจืืช ืืงืืืคืืืฆืื ืืื ืืืช ืื ืฉืืืคืฉืจ ืืืฉืชืืฉ ืืจืืฉืืื ื LGPL ืืืื ืืช ืื ืืืฉืืืื ืืกืืจืืื ืืงืื ืกืืืจ ื Web Assembly.1 419
let sol2 = part1(values_for_part2.iter()); dbg!(sol2);## ืืคืื ืงืฆืื part1 ื ืืฉืื ืืงืจืืืช ืคืื ืงืฆืืืช ืืขืืจ:
fn part1<'a>(it: impl Iterator<Item=&'a u32>) -> u32 {
let mut increases = 0;
let mut previous_line = f64::INFINITY;
for value in it {
if f64::from(*value) > previous_line {
increases += 1;
}
previous_line = f64::from(*value);
}
return increases;
}
ืืืชืืื ืฉื ืืคืื ืงืฆืื ืืื ืืืืง ืืื ืงืฉื ืืื - ืืคืื ืงืฆืื ืืงืืืช ืืืืจืืืจ ื &u32, ืืืืืจ ืืืืจืืืจ ืฉืื ืืืฉืื ืืืจ ืฆืจืื ืืฉืืืจ ืขื ืืขืจืืื. ืืืช ืืกืืื ืฉืื ืืืืืชื ืืืขืืืจ ืืคืื ืงืฆืื ืืฉืืจืืช ืืช ืืชืืฆืื ืฉื map - ืืืืืจืช ืืคืื ืงืฆืื ืืชืืชื ืืืคืืจืฉ ืฉืื ื ืื ืจืืฆื ืืงืืช ืืขืืืช ืขื ืืขืจืืื ืืื ื ืจืง ืงืืจื ืืืชื. ืืืช ืืืฉืืขืืช ืฉื ืกืืื ื &.
ืืืืื ืช ืืงืื ืืืืื mut ืืคื ื ืฉื ืืฉืชื ื ืืืืจืช ืฉืื ื ืืืื ืืฉื ืืช ืืืชื ืืืืื ืืจืืฆื (ืืจืืจืช ืืืืื ืืื ืฉืืฉืชื ืื ืืงืืืื ืขืจื ืจืง ืคืขื ืืืช - ืืืืืจ const). ืืืืืืื ื for ืื ื ืืืืง ืื ืืขืจื ืื ืืืื ืืืื ืืืขืจื ืืงืืื ืืื ืื ืืขืื ืืช ืืืื ื. ืืืืจื ื Float ื ืืจืฉืช ืื ืืขืจื ืืจืืฉืื ื ืฉื previous_line ืืื ืืื ืกืืฃ (ืืื ืฉืืืืืจ ืืจืืฉืื ืื ืืืื ืืืื ืืื ื), ืืืื ืกืืฃ ืืจืืกื ืืื ืืืืคืืก float.
## ืืื ืืืืฉืื ืืืื
ืื ืืชืืื ืืช ืขืฉืชื ืืื ืืฉืง ืืืืื ืขืื ืจืืกื ืื ื ืืืื ืืืืืฅ ืขื ืืกืคืจ ืืืื ืื ืืจืฉืื ืฉืืื ืืื:
https://doc.rust-lang.org/stable/book/
ืื ืขื ืืืืจืื Rust By Example ืืงืืฉืืจ ืืื:
https://doc.rust-lang.org/stable/rust-by-example/1 419
ืืคืื ืงืฆืื main ืืงืื ืืืืืงืช ืื ืืื ืืืกืคืจ ืืืงืื:
1. ืคืืขื ืื ืคืจืืืจืื ืฉืขืืจื ืืฉืืจืช ืืคืงืืื.
2. ืงืจืืืช ืงืืืฅ ืืงืื.
3. ืืืจืช ืืงืื ืืืกืคืจืื.
4. ืืคืขืืช ืคืื ืงืฆืืืช ืืขืืจ ืืื ืืกืคืืจ ืืื ืฉืืจืืช ืืืืืืช ืืืชืจ ืืืื ืฉืืคื ืืื.
5. ืืืจืช ืืงืื ืืงืืืฆืืช ืืกืืืืช ืืืกืคืจืื ืืื ืงืืืฆื.
6. ืงืจืืื ื ืืกืคืช ืืคืื ืงืฆืืืช ืืขืืจ ืืื ืืืฉื ืืช ืืืืง ืืฉื ื.
ืืืืง ืืจืืฉืื ืื ื ืืืงื ืืช ืืคืจืืืจ ืืจืืฉืื ืืฉืืจืช ืืคืงืืื ืืชืื ืืฉืชื ื ืืฉื
file_path:
let args: Vec<String> = env::args().collect();
let file_path = &args[1];
ืืคืงืืื collect ืืืงืืช ืืฉืื ืฉืืคืฉืจ ืืจืืฅ ืขืืื (ืืืืจืืืจ) ืืืืคืืช ืืืชื ืืืื ื ื ืชืื ืื. ืืฉืืจื ืืจืืฉืื ื ืืืงืืื ืืช ืื ืืืจืืืื ืืื ืฉืืชืืื ืืช ืงืืืื ืืฉืืืจืื ืืืชื ืืืื ื ื ืชืื ืื ืืกืื ืืงืืืจ.
ืฉืืจื ืฉื ืื ืืืงืืช ืืช ืืชื ืืจืืฉืื ืืืงืืืจ ืืฉืืืจืช ืืืชื ืืืฉืชื ื ืืฉื file_path.
ืืกืืื ืืืืืื & ืืกืื ืื ื ืืืจืืกื ืฉืื ืื ื ืื ืจืืฆืื ืืืฉืชืื ืขื ืืขืจื ืืื ืจืง "ืืฉืืื" ืืืชื, ืืืืืจ ืืงืืช Reference ืืืื. ืืงืืืคืืืืจ ืืืื ืฉืื ืขืื ืืฉ Reference ืคืขืื ืืขืจื ืืกืืื ืื ืงืื ืืืจ ืื ืืฉื ื ืื ืืืืง ืืช ืืขืจื ืืื.
ื ืืฉืื ืืงืจืืืช ืืงืืืฅ ืืคื ืื ืื ื ืจืืืื ืืื ืจืืกื ืขืืืจ ืื ื ืืืชืื ืชืืื ืืืช ืืืืืืช ืืืชืจ By Design:
let contents = match fs::read_to_string(file_path) {
Ok(c) => c,
Err(error) => panic!("Problem opening the file: {} - {:?}", file_path, error),
};
ืืคืงืืื fs::read_to_string ืืืงืืช ืฉื ืงืืืฅ ืืงืืจืืช ืืช ืืงืืืฅ ืืืืจืืืช. ืืื ืงืจืืื ืฉื ืงืืืฅ ืื ืืฉืื ืฉืืืื ืืืืืฉื - ืืืื ืืคืงืืื ืืืืืจื ืืฉืื ืฉื ืงืจื Result. ื Result ืืฉ ืฉืชื ืืคืฉืจืืืืช, ืื ืฉืืื ืชืงืื ืืื ืืฉ ืื ื ืืช ืืืืจืืืช, ืื ืฉืืื ืืืืฆื ืฉืืืื. ืืคืงืืื match ืืืคืฉืจืช ืื ื ืืืงืืืคืืืืจ ืืืคื ืืืื ืืคืฉืจืืืืช ืืืืืืืช ืฉืืืคืื ื ืืืืื, ืืืคืงืืื panic ืืืจืงืช ืฉืืืื ืืืจืกืงืช ืืช ืืชืืื ืืช.
ืื ืื ื ืื ืกื ืืืืชืจ ืขื ืงืื ืืืืคืื ืืฉืืืืืช ืืืืชืื ืืฉืื ืืื:
let contents = fs::read_to_string(file_path);
let lines = contents.split("\n");
ืืชืืื ืืช ืื ืืชืงืืคืืช ืื ื Result ืืื ืคืื ืงืฆืื ืืฉื split.
ืงืืฆืืจ ืืจื ืฉืื ืืคืฉืจ ืืืชืื ืืืขืืื ืืื:
let contents = fs::read_to_string(file_path).expect("Error");
let lines = contents.split("\n");
ืืื ืืืชื ืืืืืง ืืช ืืืชื ืืชื ืืืืช.
ืขืืฉืื ืฉืืฉ ืื ื ืืช ืืขืจืืื ืืื ืคืืฆืื ื ืืืชื ืืฉืืจืืช ืืืืข ืืืื ืืืคืื ืืช ืืฉืืจืืช ืืืงืืืจ ืฉื ืืกืคืจืื. ืืฉืืื ืื ืื ื ืืืฉืื ืืฉืืจื:
let values: Vec<u32> = lines
.filter_map(|v| v.trim().parse::<u32>().ok())
.collect();
ืืคื ืื ืื ื ืฉืื ืจืืืื ืืช ืจืืกื ืืื ืื ืื ื ื ืืืื ืืฉืืืืืช ืฉืื. ืืคืงืืื filter_map ืืคืขืืื ืืช ืืืืืง ืฉืืื ืงืืืื ืขื ืื ืืืืืจืื ืืืืืจืืืจ, ืืชืกื ื ืืื ืืืืฆื ืืช ืื ืืจืืงืื. ืืคืงืืื ok ืืืงืืช Result ืืืืืืจื ืืช ืืขืจื ืจืง ืื ื Result ืชืงืื, ืืืจืช ืืืืืจื ืขืจื ืจืืง. ืืื ืืืืืง ืฉืื ื ืืืืง ืืช ืืจืืืืื ืืชืืืื ืืืกืืฃ ืืฉืืจื, ืืคืขื ื ืืช ืืืืจืืืช ืืืกืคืจ, ืืกื ื ืืืืฆื ืืช ืื ืื ืฉืื ืืฆืืื ืืคืขื ื ืืืืืฆืจ ืืื ืืขืกืง ืืงืืืจ.
ืืคืฉืจ ืืจืืืช ืฉืื ื ืืฆืืื ืืืคืืกืื ืจืง ืืืคื ืฉืื ื ืฆืจืื ืืืชื - ืื ื ืฆืจืื ืืืืื ื collect ืืืื ืกืื ืืื ื ื ืชืื ืื ืืืืฆืจ, ืืื ื ืฆืจืื ืืืืื ื parse ืืืืื ืืืคืืก ืื ืกืืช ืืคืขื ื. ืืืืคืืก u32 ืืื Unsigned Integer ืืืืจื 32 ืืืืื.
ืขืืฉืื ืฉืืฉ ืื ืืงืืืจ ืขื ืื ืืขืจืืื ืื ื ืืืื ืืืขืืืจ ืืืชื ืืคืื ืงืฆืืืช ืืขืืจ ืฉืื ืฉืกืืคืจืช ืืื ืขืจืืื ืืืืืื ืืืชืจ ืืืื ืฉืืคื ืืื. ืืคืื ืงืฆืื ืืฆืคื ืืงืื ืืืืจืืืจ ืืืื ืืงืื:
let sol1 = part1(values.iter());
dbg!(sol1);
ืืคืงืืื dbg! ืคืฉืื ืืืคืืกื ืืช ืืขืจื ืฉืงืืืื ืืฆืจืื debug.
ืืฉืืื ืืืืง ืืฉื ื ืฉื ืืืืืงื ืืงืืืฆืืช ืืงืื ืงืฆืช ืืืชืจ ืืฆืืจืชื ืืื ืื ืืืชืจ ืืื. ืืืชืืื zip ืฉื ืืืืจืืืจ ืืืงืืช ืืืืจืืืจ ืืืจ ืืืืืืจื ืืื ืฉื ืขืจืืื ืืื ืืื ืืืืืืจืืืจืื. ืืคืงืืื skip ืืืืืช ืขื ืืืืจ ืืืืืจืืืจ ืืืื ืื ื ืืืฆืจ 3 ืืืืจืืืจืื ืื ืืื ืืชืืื ืืืืืจ ืืื ืงืืืื:
let it1 = values.iter();
let it2 = values.iter().skip(1);
let it3 = values.iter().skip(2);
ืืืืจ ืืช ืฉืืืฉืชื ืขื zip ืขื zip ืืืฉืชืืฉ ื map ืืื ืืกืืื ืืช ืืืืืจืื ืืื ืฉืืฉื:
let values_for_part2: Vec<u32> = it1.zip(it2).zip(it3).map(|((a, b), c)| a + b + c).collect();
ืืช ืืชืืฆืื ืื ื ืฉืืืจ ืืืงืืืจ ืืืฉ, ืืืืช ื ืงืืื ืฉื ืจืืกื ืฉืืืืื ืืืจืืื ืืชืืืืื ืืืื ื, ืื ืชืืื ืฆืจืื ืืฉืื ืื ืื ืฉืืืจ ืขื ืืขืจืืื. ืชืืฃ ื ืืฉืื ืืงืจืื ืืช ืคืื ืงืฆืืืช ืืขืืจ ืื ืจืื ืืื ืืื ืื ืืืื ื ืืงืื ืขืจืืื ืืืชื ื ืืืื ืืืฉ ืืืืืช ืฉืืืฉืื ืืืจ ืดืืืืืงืด ืืช ืืขืจืืื ืืื ืฉืื ืืืืืงื.
ืืกืืื ื ืขืืืจ ืืืืจืืืจ ืขื ืืืงืืืจ ืืคืื ืงืฆืืืช ืืขืืจ ืืืืืคืืก ืืช ืืชืืฆืื ืฉื ืืืืง ืืฉื ื:1 419
# ืฉืืื ืขืืื ืืืื
ืฉืคืช ืืชืื ืืช Rust ืืงืืืช ืืจืื ืชืฉืืืช ืื ืืืืืืช ืืจืฉืช ืืืกืืื ืืืื. ืืืืจืื ื ืืชืืืชื ืืฉืืง ืืืชื ืืื ื ืจืืฆื ืืฉืชืฃ ืคื ืชืืื ืืช ืจืืฉืื ื ืฉืืชืืชื ืขื ืืื ืืืจืื ืฉืืืืชื ืืฉืคื. ืืฉ ืกืืืื ืื ืจืข ืฉืืืง ืืืืืจืื ืืคืืกื ืืื ืื ืืฆืื ืืืืืงืื ืื ืืื ืืืช ืื ื ืขื ืจืืกื ืจืง ืืื ืืืื ืื ืืืคื ืฉืื ื ืืคืกืคืก ืื ืฉืืคืฉืจ ืืื ืืืชืื ืงืื ืคืฉืื ืืืชืจ ืืืืื ืื ืืชืงื ืืืชื ืืชืืืืืช.
## ืงืฆืช ืขื ืจืืกื
ืจืืกื ืคืืชืื ืืืืืืื ืขื ืืื Graydon Hoare ืืืืคืืขื ืืจืืฉืื ื ืืืืื 2010. ืืจืืืืื ืขืื ืืืืืืื ืืืื ืืคืืชืื ืืืขืืฆืื ืฉื ืืฉืคื, ืืืืจืกื ืืฆืืื ืจืืฉืื ื ืืฆืื ื 2014. ืืืื ืืฉืชืืฉืื ืืจืืกื ืืืืจืืช ืืืืืืืช ืืชืขืฉืื ืืืื ืืืืื, ืืืกืงืืจื, ืืจืืคืืืงืก, ืคืืืกืืืง, ืืืื ืืืืืงืจืืกืืคื. ืืื ื 2021 ืืคืืชืื ืฉื ืจืืกื ืื ืืื ืืืืืื ืืจื ื Rust Foundation ืฉืืืงื ืืฉืืชืืฃ ืคืขืืื ืืื AWS, Huawei, Google, Microsoft ื Mozilla.
ืืฉืคื ืขืฆืื ื ืืขืื ืืคืืชืื ืืืฉืืื ืืขืจืืช. ืืื ืืืืจื ืืื C++, ืืชืงืืคืืช, ืืืืืช ืื ืื ืื ื ืืืื ืืืืืืช ืืชืืืืืช ืืืื ื ืืฉื cargo. ืืื ืืืืื ืืืชืจ ื C++ ืืืืชืืื ืืจืืกื ืืื ื ืืืจืื.
ืจืืกื ืืืืืช ืืขืจืืช ืืืคืืกืื ื ืืงืฉื ืื ืฉืืื ืืืจ ืืฉ ืืืคืืก, ืืืฉืืืช ืืช ืื ืขื Type Inference ืื ืฉืื ืื ื ืืืขื ืื ืฆืจืืืื ืืืชืื ืืืืจืืช ืืืืคืืกืื. ืืื ืืชืงืืคืืช ืืื ืืคืืืคืืจืืืช ืืืืืืช ืืืื ื ืืืื ืืืืจืื ืืืฉื ื (ืฉืขืืืื ืื ืืื ืชื ืืืชื ืขื ืืกืืฃ) ืฉืืืคืฉืจ ืืงืืืคืืืืจ ืืืืื ืื ืืงืื ืืืืืจืื ืืื ืืืืืงืง ื Garbage Collector ืื Reference Count.
## ืืชืืื ืืช - ืชืจืืื ืจืืฉืื ืฉื AoC 2021
ืืฉืืื ืืืืื ืืช ืจืืกื ืงืฆืช ืืขืืจ ื Tutorail ืืจืืฉืื ืืืืชื ืืืืฉ ืืช ืืชืจืืื ืืจืืฉืื ื Advent Of Code ืืืืจืื. ืขื ืืืื ืืืื ืืืืฉ ืื ืืช ืืืืื. ืืชืจืืื ืื ืื ื ืฆืจืืืื ืืงืจืื ืงืืืฅ ืืงืกื ืฉืืืื ืืกืคืจืื ืืืืืื ืืื ืืืฉืืจืืช ืืงืืืฅ ืืืืืืช ืืกืคืจ ืฉืืืื ืืืชืจ ืืืืกืคืจ ืฉืืื ืงืืื. ืืืืืื ืื ืืงืืืฅ ืืืื ืืช:
199
200
208
210
200
207
240
269
260
263
ืื ืืคืฉืจ ืืจืืืช ืฉ 7 ืฉืืจืืช ืื ืืืืืืช ืืืชืจ ืืืฉืืจื ืฉืืคื ืืื.
ืืืืง ืืฉื ื ืฉื ืืชืจืืื ืืฉ ืืืกืืฃ ืืช ืืฉืืจืืช ืืงืืืฆืืช ืฉื 3 ืืืกืืื ืืช ืืขืจืืื ืืื ืงืืืฆื. ืืืืืจ ืืื ืืืืืฉ ืืช ืื ืืฉืื ืืืช ืืืืฆืืช ืงืืืฆื:
199 A
200 A B
208 A B C
210 B C D
200 E C D
207 E F D
240 E F G
269 F G H
260 G H
263 H
ืกืืืื ืืงืืืฆืืช ืื:
A: 607 (N/A - no previous sum)
B: 618 (increased)
C: 618 (no change)
D: 617 (decreased)
E: 647 (increased)
F: 716 (increased)
G: 769 (increased)
H: 792 (increased)
ืืืืืืงื ืืืืช ืื ื ืจืืื ืฉ 5 ืงืืืฆืืช ืืืืฆืจืืช ืกืืื ืืืื ืืืชืจ ืืื ืฉืืื ืืฉืืจื ืืงืืืืช.
ืขืืฉืื ืืืื ื ืื ืืจืืืช ืืื ืจืืกื ืืฆืืื ืืืฉื ืืช ืืืชื ืืกืคืจืื.
## ืคืืชืจืื ื Rust
ืืงืื ืืจืืกื ืืกืคืืง ืืจืื ืืฉืืื ืืืื ืืืชื ื ืืืจ ืื ืฉื ืืื ืขื ืืฉืคื ืืืกืื ืื ืฉืื, ืืื ืขืืืื ืืกืคืืง ืงืฆืจ ืืื ืฉืืคืฉืจ ืืืื ืืกืื ืืืชื ืืคืืกื ืืื. ืื ื ืืืืืง ืืื ืงืืื ืืช ืืชืืื ืืช ืืืืื ืืืืจื ืื ืืืฉืื ืืคืจืง ืืืชื ืืืง ืืืง:
use std::env;
use std::fs;
fn part1<'a>(it: impl Iterator<Item=&'a u32>) -> u32 {
let mut increases = 0;
let mut previous_line = f64::INFINITY;
for value in it {
if f64::from(*value) > previous_line {
increases += 1;
}
previous_line = f64::from(*value);
}
return increases;
}
fn main() {
let args: Vec<String> = env::args().collect();
let file_path = &args[1];
let contents = match fs::read_to_string(file_path) {
Ok(c) => c,
Err(error) => panic!("Problem opening the file: {} - {:?}", file_path, error),
};
let lines = contents.split("\n");
let values: Vec<u32> = lines.filter_map(|v| v.trim().parse::<u32>().ok()).collect();
let it1 = values.iter();
let it2 = values.iter().skip(1);
let it3 = values.iter().skip(2);
let values_for_part2: Vec<u32> = it1.zip(it2).zip(it3).map(|((a, b), c)| a + b + c).collect();
let sol1 = part1(values.iter());
let sol2 = part1(values_for_part2.iter());
dbg!(sol1);
dbg!(sol2);
}
## ืืื ื ืืืื ืฉื ืืงืืืฅ
ืืงืืืฅ ืืืื ืฉืืืฉื ืืืงืื:
1. ืืชืืืืช ืืงืืืฅ ืคืงืืืืช use ืืืขื ืืช ืืฉืชื ืื ืืืจืืื ืฉืืืช ืืืจืื. ืื ื ืืชืืจ ืืขืฆืื ืฉืื ืืืืืืช ืืืฆืื ืืืช ื ืืขื ืืขืชืื ืืจื use, ืืื ืืชืืื ืืช ืืืืช ืื ืืฉืชืืฉืชื ืืืืืืืช ืืืฆืื ืืืช.
2. ืคืงืืืืช fn ืืืืืจืืช ืคืื ืงืฆืืืช, ืืืงืืืฅ ืงืืืืืช ืฉืชื ืคืื ืงืฆืืืช: ืืคืื ืงืฆืื part1 ืืืคืื ืงืฆืื main.
ืืฉื main ืืื ืืฉื ืฉื ืืคืื ืงืฆืื ืืจืืฉืืช ืืชืืื ืืช ืฉืืืคืขืืช ืืฉืืชืืื ืืช ืืชืืืื.
## ืืคืื ืงืฆืื main1 419
# ืงืฆืช ืืื ืืื ืจืง ืขื ืื ืคืืื
ืืืื ืืื ืื ืคืืื. ืื ืืืื ื ืฆืจืืืื ืืื ืฉืื ืืืื ืืขืืฃ ืืื ืคืืื ืืื ืจืง ืืืง ืงืื ืืืืขืื - ืืืื ืืื ืฆืจืื ืืืฉืชื ืืช, ืืื ื ืืฉืจืืจืื ืืื ืฉืื ื ืืืื ืขืื ืืื ืกืืฃ ืืืคืืื ืื ืงืื ืื ืืืืฃ ืฉื ืืืื.
ืืฉืืืฉืื ืืืืจ ืืื ืฉืคืืฆ'ืจ ืืกืืื ืืื ืืืืืง ืืื X ืจืง ืขื ืชืืกืคืช, ืฆืจืื ืืฉืื ืื ืฉืืชืืฆืื ืขืฉืืื ืืืืืช ืืืื ืฉืื ื ืืืืื ืืืืืฆืื ืฉืืื ืืืื X.
ืื ืืืืจ1 ืฉืืืงื ืขื ืืืื ืืืืืฆืื ืฉืื ื ืืืื ืืืฆืืขืื, ืืืื ืจืื ืชืืื ืืืช ืื ืืืืจ1 ืฉื ืืชืื ืขื ืืื ืื ืฉืื ืฉืื ืืกืคืืง ืืืืจื ืื ืืืืจ ืืืืื ืืขืืืช ืืืฆืืขืื.
ืืืืืืืช ืืงืื ืฉื ืืืื ืืืืืชื ืงืฆืช ืืืชืจ ืืื ืืื ืืืื ืืืืื ืขื ืชื ืื ืืืืืคืกืงืจืืคื, ืืฉืื ืฉืืคืฉืจ ืื ืงืืช ืืืชื ืืฆืืจื ืืืืช:
type Upsert<FullType, T> = T extends { id: number }
? Partial<FullType>
: Omit<FullType, "id">;
ืืืื ืจืฆืืชื ืืงืืช ืืืคืืก ืืื:
type MyStuff = {
id: number,
foo: number,
bar: number,
}
ืืืืชืื ืคืื ืงืฆืื ืฉืชืงืื ืืฉืื ืืืืืคืืก ืื ืฉืืฉ ืื id ืืื ืืืืืื ืืืืืช ืื ืขืจืืื ื foo ืื bar; ืื ืฉืืื ืื id ืืื ืืื ืืืื ืืงืื ืขืจืืื ื foo ืื bar. ืืืืืจ ืงืื ืืื:
function upsert<T>(thing: Upsert<MyStuff, T>) {}
// I wanted these to compile:
upsert({ id: 10, foo: 5 });
upsert({ foo: 10, bar: 20 });
// And this to not compile:
upsert({ foo: 5 });
ืืืืืื ืฉืื ืื ืขืืื.
ืื ืฉืืขื ืืื ืืื ืืื ืืกืืื ืฉืื ืื ืขืื ืืืคืืชืจืื, ืฉืืงื ืื ืืืชืจ ืืื ืืื ืืจืืืช. ืืืืืื ืชื ืื ืืืืืคืกืงืจืืคื ืื ืืื ืชื ืืื ืจืืืืื ืจืง ืขื ืืืืืกื: ืืืื ืฉืื ืืืืืื ืืขืืื ืขื ืืฉืชื ืื ืื ืจืืื, ืืืืจ ืฉืื ืืืืืจืื ืืืื ืืืฉืคืืข ืืืืจื ืขื ืืชื ืื ืขืฆืื. ืื ืื ืฉืงืืื ืืฉืขืจืืื ืืช ืืชื ืื ืืื ืืืืืื ืืืืืืจ ืืช ืืขืจื ืืื ืืืืืืื ืชื ืื ืจืืืืื, ืืื ืฉืืื ืงืืจื ืืื.
ืืงืื ืืื ืืืจ ืขืืื:
type Upsert<FullType, T> = T extends { id: number }
? T & Partial<FullType>
: T & Omit<FullType, "id">;
type MyStuff = {
id: number,
foo: number,
bar: number,
}
function upsert<T>(thing: Upsert<MyStuff, T>) {}
// Compiles
upsert({ id: 10, foo: 5 });
upsert({ foo: 10, bar: 20 });
// Doesn't compile - missing "id" or "bar"
upsert({ foo: 5 });
ืืืืจืกื ืืืืช ืืืืคืกืงืจืืคื ืืืืข ืขืื ืืืจ ืขื T, ืืื ืืืคืฉืจ ืื ืืืืืจ ืืืคืืก ืืืชืจ ืืื ืืืฉืชื ื ืืื ืจื ืืงืจืืื ื upsert - ืืขืฆื ืืงืจืืื ืืืืช T ืืืื ืืช ืื ืืฉืืืช ืฉืืืืจืื ืืืชื ืื, ืืืื ืืื ืืืื ืื ืืช id. ืื ืื ืืืื ืืืืจืกื ืืจืืฉืื ื ืฉื ืื ืืื ืฉืื ืืืืืฅ ืขื T ืืืื ืืื ืืื ืืืื ืืืืืช ืืืคืืก ืจืืง ืืืชื ืื ืชืืื ื ืื ืก ืืขื ืฃ ืืฉืืืื.
ืื ืื ืืืคืืกืื ืืืชื ืื ืื ืงืฆืช ืืื ืืืืืื ืชื ืื ืจืง ืขื ืืืืืกื, ืืื ืืืืืืกื ืืืื ืืืจืื ืืืื ืืืืืฆืื ืืขืืื ื ืืื ื.1 419
# ืืงืคืืฆื
ืืืืืื ืืืืจ ืืืฉ, ืืื ืื ืืกืคืจ, ืืืจืฆืื, ื Tutorial ืื ืื ืืจื ืฉื ืืืจ, ืืฉ ื ืงืืื ืฉืืืืืื ืืชืืืืืช ืืืื ืืฉืืขืืช. ืื ืืจืืืฉ ืืื-
"ืื ืื ื ืืืื ืืช ืื"
"ืืจืืจ"
"ืจืขืืื ืืื"
"ืื ื ืืืื ืืืชืื ืืช ืื"
ืืื ืืฉืื ืืงืื ืืืืข ืืืื "ืจืืข, ืื ืืจืืข ืืื ืคื?!". ืืืช ืืงืคืืฆื ืืืคืืืงืฆืืืช Todo MVC ืคืฉืืื ืืืขืจืืช ืืืืชืืช ืขื ืืฉืชืืฉืื ืืืืืช ืืืคื ืฉืืจืืช ืงืื. ืืืื ืฉื ืื ืืืชื ืื ืืื ืฉืืชื ืืช ืืืืจืื ืืืืช ืจืืฆื ืืขืืืจ ืื ื ืืืชืืืื ืื ืขื ืืกืืืืืฆืืืช ืืืกืืืืืช ืฉืืืืืืช ืืืืืข.
ืืืจืืฉื ืฉื "ืื ืืจืืข ืงืจื ืคื" ืื ืืืืขื ืืืื ืฉืืืืืื ืื ืืกืคืืง ืืืืืช ืื ืืืกืืจ ืื ืืืืืง. ืืื ืืืืขื ืืืื ืฉืืื ืื ื ืืกืคืืง ื ืืกืืื ืืฉืืื ืืืืื ืืช ืืืขืื ืฉืืืืจืื ืืืืจ ืขืืื. ืืืื ื ืืกืืื ืื ืืกืืจ ืืืื ืชืืืฉ.
ืืฉืืืืขืื ืื ืงืืื ืื ืืืกืืจ ืืชืืื ืืจืืฅ ืืืจ, ืื ืืจืื ืคืขืืื ืื ืืงืฆื ืฉื ืืืกืืจืื ืฉืืฉืชื ื ืืื ืืืืื ืืช ืืืืืืืช ืฉืื ื ืืงืื ืืืชื. ืืืงืื ืืืคืฉ ืืกืืจ ื ืืกืฃ ืืืงืื ืืืจ, ืฉืืื ืืขืฆืืจ ืืืฆืืืจ ืขืื ืงืฆืช ื ืืกืืื ืืืืจืื ืฉื ืจืืื ืืืื ืื: ืขืื ืชืืื ืืช, ืขืื ืคืจืืืงื, ืืงืฆืช ืืืชืจ ืืืื, ืืืืืื ืืืืื ืืชืื ืืฉืืืืช ืฉื ืคืชืจืืช ืืืืง ืืื ืฉื ืืืกืืจ.
1 419
# ืืื ืืืืืื ืืช ืืืื
ืื ื ืื ืืืืข ืขืื ืื ืื ื ืจืืฆื ืืื ืืช. ืื ื ืฆืจืื ืืช ืืืืืฉืืช ืืฉื ืืช ืชืื ืืื ืชื ืืขื.
ืื ื ืืืคืฉ ืืื ืืช ืคืจืืืงื ืืืื. ืื ืืชืจืกืงืืช ืชืขืื ืื ื ืืืื ืืกืฃ.
ืื ื ืฆืจืืื ืืื ืืช ืคืจืืืงื ืฉืืชืคืงื ืืื ืขืืืจ ืืืืืื ื ืืฉืชืชืคืื ืืฉืชืืื ืืคืฉืจ ืืืื ืืืืืื ืืืชื. ืืคืจืืืงื ืืืืืฃ ืืขืจืืช ืงืืืืช ืืื ืื ื ืืืืขืื ืืืืืง ืืื ืชื ืืขื ืฆืคืืื.
ืืฉ ืื ื ืืื ืืืืช ืืชืื ืชืื ืฉืืขืืื ืขื ืืคืจืืืงื. ืื ืื ื ืืืคืฉืื ืชืฉืชืืช ืฉืื ืื ืืืืื ืืขืืื ืืื ืืื ืืืืืืช ืืขืืืื.
ืื ื ืืืคืฉืช ืืื ืืช ืคืจืืืงื ืฆื ืืชืืจ ืืชืื ืชืช ืืืืื ืฉืขืืืืช ืฉืขื-ืฉืขืชืืื ืืืื. ืืืื ืืขืชืื ืืื ืืก ืคืจืืืื ืกืจ ืฉืืขืืืจ ืขื ืืืง ืืืคืืฆ'ืจืื.
ืื ื ืืืื ืืืืืข ืืื ืฉืืืชืจ ืืืจ ืขื ืืืฆืจ ืืฉืืง. ืื ืืฉื ื ืื ืื ืืืื ืืืืื ืื ืื ืื ืื ืืขืืื ืืื ืืื ืืืืจืกื ืจืืฉืื ื - ืืืฉืงืืขืื ืืืฉืืื ืื ืขื ืืืืจืื ืืื ืื ื ืืืจ ืืืจื ืฉื ื ืคืืืืืื.
ืืืืจ ืืื ืืฉืื ืื ืื ืฉืืืื ืงื ืืืืืก ืื ืฉืื. ืืจืืข ืื ืื ื ืขืืืื ืฆืืืช ืงืื ืืื ืืืจ ืืืื ืื ื ืืืืืช ืืงืื ืืฉืงืขื ืจืฆืื ืืช ืืฆืจืืืื ืืืืืช ืืกืืืืื ืืืื ืืก ืืชืื ืชืื ืืืฉืื ืืขื ืืื ืื ืืงืืืช.
ืื ืื ื ืืื ืื ืืืืฉ ืืช ื Front End ืื ืฉื ืชืืื - ืื ืืฉืื ืฉื ืืืื ืืื ืืฆื ืืฉืจืช.
---
ืื ื ืืงืืื ืฉืฉืืชื ืื ืืื ืื ืกืืคืืจ ืืืืข ืขื ืืืืืฆืื ืืฉืื. ืื ืืชืืืืืช ืืื ืืืืืืช ืฆืจืืื ืืืชืืื ืืจืฉืืืช ืืืืืฆืื, ืืืจืื ืคืขืืื ืืฉืืฉ ืื ื ืืช ืืืืืืฆืื ืืจืืจืื ืืื ืืขืื ืืื ืื ืื ื ืืืืื ืฉืืืืืจื ืืืื ืืืืืืช ืืื Non Issue.
1 419
# ืืฉืืืื ืื ืืกืคืง ืืช ืืชืืืจื
ืื ืืชื ืขืืืืื ืขื ืคืจืืืงื ืืืืคืกืงืจืืคื ืืืืชืืื ืืืืจืืช ืืืคืืกืื ืจืง ืืืคื ืฉืงื, ืืฉ ืกืืืื ืืื ืฉืืื ืืื ืืืืช Type Safety ืืคืจืืืงื - ืคืฉืื ืื ืืจืื ืคืื ืงืฆืืืช ืืฉืชืืฉืื ืืืืคืืกืื ืื ืจืืื ืืื.
ืื ืืชื ืืืชืืื ืืืืงืืช ืจืง ืืืคื ืฉืงื, ืืฉ ืกืืืื ืืื ืฉืืืืืงืืช ืฉืืื ืื ืืฆืืขืืช ืืืกืื ืงืื ืืืืชื.
ืื ืืชื ืืืชืืื ืชืืขืื ืจืง ืืืชืืืช ืงืื ืืืฉ, ืืื ืืืจืืื ืืขืืื ืืืชื ืืฉืืชื ืืขืืื ืื ืงืื (ืื ืืื ืืื ืืืืจืื ืืืื ืืฉ ืืื ืงืจืืื ืืคืจืืืงืฉื), ืืฉ ืกืืืื ืืื ืฉืืชืืขืื ืฉืืื ืื ืืืื ืืช ืืขืจื ืฉืชืืขืื ืืืื ืืืืื.
ืืฉ ืื ืืขื ืืฆืืื ืืื 50% ืืฉืงืขื (ืืืคืืื 80% ืืฉืงืขื) ืื ืชืืชื 50% ืชืืืจื. ืื ืืืืืชื ืืืืืจ ืืื ืฉืืืจืฉ ืืกืืจืืช ืืืืืืช, ืชืืืืื ืงืืื ืฉืืชื ืืืื ืื ืืฉืื ืืช ืืืืืจ ืื ืืฉืงืฉื.
1 419
# ืืืขืื ืขื ืืจืืงืื ืืืืื
ืืืขืื ืขื ืืจืืงืื ืืืืื ืืื ืื ืฉืื ืื ืขืืืืื - ืื ืืช ืื ืกื ืืขืืื ืืช ืืฆืืืช ืืขืืื ืงืฉื ืขื ืืืืืื ืืืืฆื, ืืืช ืืฆืืืื ืืฉืืืจ ืขื ืคืจืฆืืฃ ืจืฆืื ื, ืืฉ ืกืืืื ืืื ืฉืื ืฉืื ืืืฉืืจื ืฉืขืืช ื ืืกืคืืช ืืืขืฉื ืืืืฅ ืืื ืืืืืข ืืื ืืืื ืืื ืขื ืืืฆืจ ืฉืขืืื; ืื ืืชื ืฆืจืื ืืืืืข ืขื ืืืฆืจ ืืืงืื ืืืชื ื ืืชื ืืืฆืจ ืฉื ืจืื ืขืืื ืืื ืืขืฆื ืขืืื ืขื ืืจืขื ืชืจื ืืืืช, ืืืงืื ืืืื ืื ืืฉืื ืื ืืืขืืืช ืืืื ืจืืฉืื; ืื ืืช ืืืืืช ืงืืจืก ืืืจืื ืืื ืฉืื ืจืง ืืืจืื ืฉืงืืื ืืื ืื ืืฆืื ืืืงืืจืก ืืืจืืฉื ืฉืื ืืืืขืื ืืื ืืืงืืจืก ืืฆืืื.
ืืืขืื ืขื ืืจืืงืื ืืืืื ืืื ืืืืืง ืฉืื ืขืืืืื. ืืื ืจืง ืคืขื ืื ืคืขืืืื.
ืื ืืืจื ืื-ืืืื ืคืืงืืืื ืื ืฉื ืืื ืื ืฉืื ืืืจ ืื ืืืืื ื ืื, ืืืืื ืงืฉื ืืืื ืืขืืจืจ ืืฆืืืช ืืืืืืฆืื ืื ืืืืจืื ืืฉืืืื. ืืืชืจ ืืื, ืืฉืื ืฉืื ืืชืจืืืื ืืชืจืืืช ืฉื ืฉืงืจ ืืืื ื ืคืืขืื.
ืื ืืืจื ืืืฆืจ ืฉืืืจ ืืื ืืืงืื ืืืื ืืืืืช ืืจืื ืืืชืจ ืืฉืื ืืงืจืืช ืืืืฆืจ ืืื, ืื ืืืื ืชืงืื ืืืืื ืืช ืฉื ืื. ืืื ืื ืชืืฉืื ืืืงืื ืืืฉ ืืืืจื ืืื ืื ืฉืื ืืชืืืื ืืืืจ ืืืืื ืื ืงืฉื ืืืืื.
ืืืืจื ืฉืื ืฉืื ืืืื ื ืฉืคืฉืื ืืืืืช ืขื ืื ืืืืงืื ืืงืฉืื ืืงืืจืก, ืื ืขืืืืื ืืืฉืื ืคืขืืืื ืืคื ื ืฉืืงืื ืงืืจืก ื ืืกืฃ - ืื ืืืืื ืืงืืจืกืื ืืื ืขืจื ืืืืจืืื ืฆืจืื ืืืืื ืืื ืืื.
ืืคืขืืื ืฉืืื ืื ืืกืคืจ ืืช ืืื ืืื ืืื ืืืฆืืจ ืืชื ืืืขืืืจ ืืื ืฉืื ืืขืืืจ ืืืืฉืื ืืืกืื ืคืกืืืืืืื. ืืื ืจืื ืืืื ืคืชืืืืช ืืฉืชืืืช ืืจืื ืืืชืจ ืื ืืื ืืืฆืจืช ืชืจืืืช ืืืื ืืืชืจ ืืืืื ืืจืืืง.
1 419
EventPayload extends Extract<Event, { type: EventType }>["payload"]
>(
eventType: EventType,
...eventPayload: EventPayload extends undefined
? [undefined?]
: [EventPayload]
) {}
handle("login", { username: "ynon" });
handle("logout");
handle("sendMessage", { to: "ynon", text: "hi ;)"});
ืืงืื ืืื ืืืจ ืขืืื ืืืฉ ืืืื. ืืืจืืขืื ืฉืืืืืจืื ืขื payload ืืืจืฉืื ืฉื ืขืืืจ ืืช ื payload ืืคืจืืืจ ืืฉื ื ืืืืืงืื ืฉืื ืฉืืขืืจื ื ืชืืื ืืืืืจื ืืืืคืืก ืืืืจืืข, ืืืจืืขืื ืฉืืืืืจืื ืืื payload ืืคืฉืจ ืืืคืขืื ืจืง ืขื ืคืจืืืจ ืืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
