HackThisSite Programming missions Unscramble the words

2024-02-07 04:30

本文主要是介绍HackThisSite Programming missions Unscramble the words,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Programming missions

  • Unscramble the words (整理单词)
    • 任务描述
    • 扣 Code
    • 执行

Unscramble the words (整理单词)

大家好!自从昨天花了半个多小时,一口气将所有的 Javascript missions 搞定之后,我极度的膨胀!所以我开始下一个任务 Programming missions - 编程任务 。第一关难度 easy, 我也是这么认为的。我打开任务一看有倒计时,我首先干的事就是将倒计时停掉,我认为一定是这么搞的。然而,当我分析完任务内容,费脑扣好代码,编译 > 执行 > 复制 > 粘贴 > 提交 额!对不起:答案是正确的,但是你用了太多的时间。你有三十秒的时间,然而你用了几千秒。 看来时间也是任务的一部分,我想是不是我搞错了方向了,不应该这么搞。。。想了一整子可能需要先扒站,下载wordlist - 单词表,当场解压完成后立即执行代码,并将结果直接提交 全程根本不通过浏览器,这样才会在最快的速度搞定。em… 根据我当前的水平及自身条件(单身30年)研究决定拼!手!速!。预先下载好单词表(单词表用几次就会变更,具体是怎么变更的没有细究,反正一个单词列表是可以用几次的)。开始 > 准备好执行命令 > 刷新页面 > 快速定位元素 > 获取混乱单词列表 > 执行 > 复制 > 粘贴 > 提交 搞定!手速尚可。em…

任务描述

mission describe
该等级是关于整理单词的。
从单词表中随机取出一些单词,打乱拼写顺序,然后找出这些单词,保持和下面混乱单词列表中相同的顺序,并以逗号分隔。
你有三十秒的时间(这个时间也是任务的一部分,我决定拼手速了)。

单词列表中有一千两百多个单词,通过文件读写的方式取出单词,存入到数组中【wordlist】,然后将上面的混乱单词列表作为代码的执行参数也放入到数组中【argv】。遍历argv 在 wordlist 中匹配单词。
匹配单词用到了两个函数 strspn 和 struocpm,strspn 是C语言库函数 <string.h> 中的函数:检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标。struocpm 是我自己写的通过求和来比较无序的两个字符串是否相等。

扣 Code

/* date time: 2021-04-24 14:13:20 */
/* 代码写的潦草没有优化,并且使用中文注释,请见谅!*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>int struocpm(char *str1,int len1, char *str2, int len2);/* @argv 执行参数数组,即混乱单词表数组*/
int main(int argc, char **argv)
{FILE *fp = NULL;char code;size_t size = 0; /* 单词数组大小 */size_t wordlen = 0; /* 单词长度 */size_t word_maxlen = 0; /* 最长单词长度 */size_t word_count = 0; /* 单词总数量 */char **wordlist = NULL; /* 单词表数组 */char *tmp_world = NULL; /* 临时存放读取的单词 */int tmp_len = 0;int i, j;fp = fopen("wordlist.txt", "r"); /* 读取已经下载好的单词表(解压后的)*/if(fp == NULL) {exit(0);}printf("\n------------ read wordlist ------------\n\n");/* 第一次统计一共有多少个单词,找出最长的单词长度 */while((code = fgetc(fp)) != EOF) {if (code == '\n') {wordlen = 0;if (wordlen > word_maxlen) {word_maxlen = wordlen;}}wordlen++;size++;}rewind(fp);wordlist = (char **)calloc(size, sizeof(char)); /* 初始化单词表数组 */tmp_world = (char *)calloc(word_maxlen, sizeof(char)); /* 以最大单词长度初始化字符串 */wordlen = 0;while((code = fgetc(fp)) != EOF) {if (code == '\n') {wordlist[word_count] = (char *)calloc(wordlen, sizeof(char));strncat(wordlist[word_count], tmp_world, wordlen);wordlist[word_count][wordlen - 1] = '\0';word_count++;wordlen = 0;memset(tmp_world, '\0', word_maxlen);continue;}tmp_world[wordlen] = code;wordlen++;}printf("word count: %zu\n", word_count);printf("\n------------ match word ------------\n\n");for (j = 1; j < argc; j++) {tmp_len = strlen(argv[j]);for (i = 0; i < word_count; i++) {if (strspn(argv[j], wordlist[i]) == tmp_len &&struocpm(argv[j], tmp_len, wordlist[i], strlen(wordlist[i]))) {printf("%s",wordlist[i]);if (j < argc - 1) {/* 为了可以快速复制,不输出最后一个逗号 */printf(",");}break;}}}printf("\n\ndone.\n");free(tmp_world);free(wordlist);fclose(fp);return 0;
}int struocpm(char *str1,int len1, char *str2, int len2)
{int i;int str1_val = 0;int str2_val = 0;for(int i = 0; i < len1; i++) {str1_val += str1[i];}for(int i = 0; i < len2; i++) {str2_val += str2[i];}return str2_val == str1_val;
}

执行

  1. 获取混乱单词列表ul wordlist
  2. 执行代码 action
  3. 提交sumit
  4. 反馈result
    各位,演示中我花了67.4秒,如果你有更有效率更好的方案,请分享给我。感谢!

这篇关于HackThisSite Programming missions Unscramble the words的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/686519

相关文章

HDUPlay on Words

1.定理:无向图G有欧拉通路的充分必要条件是G为连通图,并且G仅有两个奇度结点或者无奇度结点。 (1)当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点。 (2)当G是无奇度结点的连通图时,G必有欧拉回路。 2.一个有向图D具有欧拉通路,当且仅当D是连通的,且除了两个顶点外,其余顶点的入度均等于出度,这两个特殊的顶点中,一个顶点的入度比出度大1,另一个顶点的入度比出度小1

[LeetCode] 692. Top K Frequent Words

题:https://leetcode.com/problems/top-k-frequent-words/ 题目大意 对于 string[] words,输出 出现频率前k高的 word,顺序 为 word 出现的频率 由高到低 ,频率相同的 word 按 字符排序。 思路 其实是对words中的所有word进行一个排序。 排序有两个规则: 1.word 在 words中出现的次数。 2.

[LeetCode] 820. Short Encoding of Words

题:https://leetcode.com/problems/short-encoding-of-words/ 题目大意 参考题目 思路 set 集合 将所有word 放入set中,然后遍历所有set中的word,将word的从头的子串都从set中删除,最后统计 set中所有(word 的长度 + 1)(’#’) class Solution {public int minimumL

【HDU】4117 GRE Words AC自动机+线段树优化DP

传送门:【HDU】4117 GRE Words 题目分析:水不了啊狸的打字机就来水这题了= =。。。 首先建立ac自动机,然后用fail指针的反向关系建边,构造fail指针树。fail指针树中每个结点u表示的串都是其子节点v的后缀(同时该后缀是所有串中最长的)。对fail指针树dfs一次得到时间戳,当要求以串i结尾的最大价值,首先我们需要知道以串i的子串j结尾的最大价值val。因为在树中

LeetCode 30 Substring with Concatenation of All Words

题意: 给出字符串s和许多等长(len)单词w,找出所有s中的满足子串为w中所有单词的一种组合的位置。 思路: 因为w中的单词要满足的是组合而不是排列,因此用“区间[L,R]中包含单词的计数”来维护比较合适。 一是满足了组合对顺序的不要求,二是方便处理重复的单词。 首先可以统计一下,w中各种单词个数。如果s的长度为size(w) * len的子串单词计数与w相同,则找到一个答案。

Nordic Collegiate Programming ContestNCPC 2021

Date:October 9, 2021 Dashboard - 2021-2022 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2021) - Codeforces Problem - C - Codeforces--Customs ControlsProblem - C - Codeforces- 题意:给定一个n个点,m条边

强化学习实践(二):Dynamic Programming(Value \ Policy Iteration)

强化学习实践(二):Dynamic Programming(Value \ Policy Iteration) 伪代码Value IterationPolicy IterationTruncated Policy Iteration 代码项目地址 伪代码 具体的理解可以看理论学习篇,以及代码中的注释,以及赵老师原著 Value Iteration Policy Itera

SAP CAP(Cloud Application Programming)知识介绍和学习路径

1. 框架简介 1.1 什么是CAP? CAP(Cloud Application Programming)是SAP推出的一种现代化开发框架,旨在简化和加速云原生应用程序的开发。 CAP框架基于开放标准和技术,如Node.js、Java、OData和SQL,提供了一套工具和库,帮助开发人员快速构建、扩展和运行企业级应用。 1.2 CAP的基础技术框架 CAP框架主要由以下几个部分组成:

Aspose.Cells、Aspose.Words常用功能

一般使用 Excel求和Word插入内容新建插入图片插入表格 Excel求和 冒号 为 范围 B2~B11 逗号 为 B1+B11 worksheet.Cells["A4"].Formula = "=SUM(A1:A3)";worksheet.Cells["A4"].Formula = "=SUM(A1,A3)"; 单元格设置公式后,保存 Excel 文件后打开即可得到

指针 C programming

”许久未曾提笔,心湖泛起涟漪。“ 概念:指针是一种将另一个变量的内存地址存储 为其值的变量。 int a = 1;printf("%d", a); // 打印的是 变量a 的 存储地址 位置上 存储的 值printf("%p", (void*)&a); // 打印的是 变量a 本身的 地址值int *p = &a; // & 符号是取地址符 所以这行代码的意思是取变量a的本身存储地