我知道什么new是用来创建对象的,但是当你写的时候会发生什么имяКласса.new Класс();呢?
有一个任务:
最初,我用python编写代码,结果是这样的:
from array import array
def string_xor(a: str, b: str):
"""
Проверка на схожесть строк
3 - одинаковые
2 - 1 различие
1 - больше 2 отличий
"""
k = len(a)
if k == len(b):
a1 = array('u', a)
b1 = array('u', b)
errors = 0
for i in range(k):
if a1[i] != b1[i]:
errors += 1
if errors > 1:
return 1
elif errors == 1:
return 2
elif errors == 0:
return 3
return 1
n, m = map(int, input().split())
words = sorted(input() for _ in range(n))
for _ in range(m):
word = input()
one_diff = [] # Список слов, которые расходятся ровно на одну букву
for cur in words:
ans = string_xor(word, cur)
if ans == 3:
print(cur)
break
elif ans == 2:
one_diff.append(cur)
else:
if one_diff:
print(min(one_diff))
else:
print('?')
但它在其中一项时间测试中崩溃。然后我重写了它的优点,认为它会有所帮助。
#include<iostream>
#include "vector"
#include "algorithm"
using namespace std;
int check(string a, string b) {
int k = a.size();
if (k == b.size()) {
int errors(0);
for (int i = 0; i < k; i++)
errors += a[i] != b[i];
if (errors == 0)
return 0;
else if (errors == 1)
return 1;
return 2;
}
return 2;
}
int main() {
ios::sync_with_stdio(false);
int n, m;
cin >> n >> m;
string word;
vector <string> words(n), one_diff;
for (string &el : words)
cin >> el;
sort(words.begin(), words.end());
for (int i = 0; i < m; i++) {
cin >> word;
bool is_break(false);
for (const string &cur : words) {
int d = check(cur, word);
if (d == 0) {
cout << cur << "\n";
is_break = true;
break;
}
else if (d == 1)
one_diff.push_back(cur);
}
if (!is_break) {
if (!one_diff.empty()) {
sort(one_diff.begin(), one_diff.end());
cout << one_diff[0] << "\n";
one_diff.clear();
}
else
cout << "?" << "\n";
}
}
}
但它并没有帮助,落在同样的考验。告诉我这里需要更改什么,以便程序及时适应。
我做了一个字符串长度的字典,有一个时间是1.033,它变成了1.09代码:
from array import array
def string_xor(a: str, b: str):
k = len(a)
if k == len(b):
errors = 0
for a1, b1 in zip(a, b):
errors += a1 != b1
if errors > 1:
return 1
elif errors == 1:
return 2
elif errors == 0:
return 3
return 1
n, m = map(int, input().split())
d = {}
for _ in range(n):
word = input()
z = len(word)
d[z] = d.get(z, [word]) + [word]
for i in d.keys():
d[i].sort()
for _ in range(m):
word = input()
one_diff = set()
try:
for cur in d[len(word)]:
ans = string_xor(word, cur)
if ans == 3:
print(cur)
break
elif ans == 2:
one_diff.add(cur)
else:
if one_diff:
print(min(one_diff))
else:
print('?')
except KeyError:
print('?')
PS 代码及时崩溃...
PPS 抱歉,我无法提供该任务的链接。
我有一张用以下内容绘制的汽车图像SVG:
<svg id="svg" viewBox="0 0 1500 1000">
<!--Автомобиль-->
<g id="car">
<!--Зеркала-->
<path d="M371 88l-31-77c-3-6-9-11-17-11h-23l35 88zm0 142h-36l-35 88h23c8 0 14-5 17-11z" fill="red" />
<!--Кузов-->
<path d="M492 224l13-30c9-22 9-48 0-70l-13-30a88 88 0 0 0-88-53L256 53 104 40c-36-3-70 17-86 49l-3 7c-20 40-20 86 0 126l3 7a88 88 0 0 0 86 49l152-13 148 12c38 3 73-18 88-53z" fill="orangered" />
<!--Тень кузова-->
<path d="M396 277c66-50 95-134 74-214 9 9 17 19 22 31l13 30c9 22 9 48 0 70l-13 30a88 88 0 0 1-88 53z" fill="red" />
<!--Переднее стекло-->
<path d="M369 91l-2-3c-3-5-10-8-16-7l-77 7v142l77 7c6 1 13-2 16-7l2-3c27-41 27-95 0-136z" fill="white" />
<!--Тень переднего стекла-->
<path d="M370 92c26 41 26 94-1 135l-2 3c-3 5-10 8-16 7l-59-6c44-33 72-84 78-139z" fill="lightgray" />
<!--Заднее стекло-->
<path d="M150 88v142l-41 6c-7 2-14-2-18-8l-9-18c-18-32-18-70 0-102l9-18c4-6 11-10 18-8z" fill="white" />
<!--Тень заднего стекла-->
<path d="M91 228l-5-9c31-35 53-76 64-121v132l-41 6c-7 2-14-2-18-8z" fill="lightgray" />
<!--Фары-->
<path d="M411 72l53 36-10 15-53-36zm43 124l10 15-54 35-10-15z" fill="yellow" />
</g>
</svg>
还有一张城市地图的图像,我想在其道路上重现汽车运动的动画:
我设法将SVG城市地图和汽车图像合二为一。此外,使用动画命令<animateTransform>和属性,translate(x,y)我能够重现汽车沿道路行驶的动画。
点击地图后动画开始
<svg id="svg" viewBox="0 0 1600 900">
<g id="map" x="0" y="0">
<image href="https://i.imgur.com/kb3KgeW.jpg">
</image>
</g>
<!--Автомобиль-->
<g transform="translate(10,456)">
<g transform="scale(0.08)">
<!--Зеркала-->
<path d="M371 88l-31-77c-3-6-9-11-17-11h-23l35 88zm0 142h-36l-35 88h23c8 0 14-5 17-11z" fill="red" />
<!--Кузов-->
<path d="M492 224l13-30c9-22 9-48 0-70l-13-30a88 88 0 0 0-88-53L256 53 104 40c-36-3-70 17-86 49l-3 7c-20 40-20 86 0 126l3 7a88 88 0 0 0 86 49l152-13 148 12c38 3 73-18 88-53z" fill="orangered" />
<!--Тень кузова-->
<path d="M396 277c66-50 95-134 74-214 9 9 17 19 22 31l13 30c9 22 9 48 0 70l-13 30a88 88 0 0 1-88 53z" fill="red" />
<!--Переднее стекло-->
<path d="M369 91l-2-3c-3-5-10-8-16-7l-77 7v142l77 7c6 1 13-2 16-7l2-3c27-41 27-95 0-136z" fill="white" />
<!--Тень переднего стекла-->
<path d="M370 92c26 41 26 94-1 135l-2 3c-3 5-10 8-16 7l-59-6c44-33 72-84 78-139z" fill="lightgray" />
<!--Заднее стекло-->
<path d="M150 88v142l-41 6c-7 2-14-2-18-8l-9-18c-18-32-18-70 0-102l9-18c4-6 11-10 18-8z" fill="white" />
<!--Тень заднего стекла-->
<path d="M91 228l-5-9c31-35 53-76 64-121v132l-41 6c-7 2-14-2-18-8z" fill="lightgray" />
<!--Фары-->
<path d="M411 72l53 36-10 15-53-36zm43 124l10 15-54 35-10-15z" fill="yellow" />
</g>
<animateTransform attributeName="transform" type="translate"
begin="svg.click" dur="15s" values="10,456; 1510,456; 10,456" additive="replace" calcMode="linear" repeatCount="indefinite" fill="freeze" restart="whenNotActive" />
</g>
</svg>
然而,这样的动画只会让汽车直线移动一段路,这根本不是我想要的结果。
问题:如何播放城市地图上显示的汽车沿整条道路移动的动画?如果可能的话,最好考虑以下几点。城市地图图像的大小为 1600x900。如果用户的屏幕尺寸较小,则相应地,在我的示例中,整个 SVG 元素的尺寸会减小,以适应浏览器窗口的尺寸。那么,如何为 SVG 元素设置固定尺寸(例如,600x300),使其所有内部元素(地图和汽车)的尺寸不会减小,并且当汽车移动时,地图会在 SVG 元素内跟随它移动?
怎么做,如下图。我试着做了,但适应性挥之不去(我为手机做了不同的缩进,但是太多了)
#vertical_text {
font: 47px Verdana;
color: #D7D7D7;
transform-origin: left bottom;
margin-left: 40px;
padding-left: 6px;
transform: rotate(-90deg);
}
#year70 {
font: 900 110px Verdana;
color: #F9AD6A;
margin-left: -23%;
}
#horiz_text {
font: 47px Verdana;
color: #D7D7D7;
}
也许你可以做一些不同的事情?ps:不要过多地踢第一个布局:D
我在隧道的开头有以下球代码:
body {
margin: 0; padding: 0; min-height: 100vh;
display: flex; align-items: center;
}
.container {
width: 100%; height: 160px;
background: #fbf2d4;
}
.ball {
width: 40px; height: 40px;
border-radius: 50%;
background: #f48024;
}
<div class="container">
<div class="ball"></div>
</div>
可以通过什么手段和技术来实现小球沿给定轨迹在某个隧道内运动的动画,如下图所示?
需要播放此动画。但是,在这样做之前,您需要了解为什么要开始以应用所选技术的必要手段。这是否是球移动的给定轨迹。或者它是一个从上下墙壁反弹的飞球。对于答案,这个选择无关紧要。最重要的是创建此类动画效果的实现及其详细说明。





