Questions tagged «file-system»

对于与操纵和遍历文件系统有关的挑战。这可能包括读取目录树,创建,移动和删除文件或目录,读取或更改文件权限等。

14
目录计算
对于此挑战,将为您提供一条绝对路径和一条“新”路径(可以是绝对路径,也可以是相对路径),并且您需要返回最终路径。 例如,如果您当前的目录是/var/tmp/test: my_dir 要么 my_dir/ 应返回/var/tmp/test/my_dir ../../my_dir 应该回来 /var/my_dir /my_dir/./ 应该回来 /my_dir ../../../../../ 应该回来 / 要更加学究: 目录是由字母数字字符的非空字符串和符号-,_或. 路径是0或多个目录的列表,用分隔/。绝对路径以a开头/,相对路径则不是。路径可以包含结尾/。 给定第一个路径,您需要“解析”第二个路径。 解决的过程是: 测试第二条路径是否相对。如果是这样,则将绝对路径的目录插入第二个路径的开头。 如果任何目录为..,则将其和上一个目录删除。如果它是第一个目录,则只需将其删除。 如果任何目录为.,则将其删除。 输出最终的绝对路径。您不应该输出结尾/。 您不需要处理不正确的输入。无论所传递的目录在您的计算机上是否实际存在,这些命令都应该起作用。您可以假定所有内容都是目录,即使它具有扩展名。 测试用例 Absolute New Output "/a/b/c" "d" -> "/a/b/c/d" "/a/b/c/" "d" -> "/a/b/c/d" "/a/b/c/" "d/" -> "/a/b/c/d" "/a/b/c" "/d" -> "/d" "/a/b/c" "/d/" -> "/d" "/../a/b/c/" …

4
计算实际数字
定义 正整数n是一个实际数字(OEIS序列A005153),前提是所有较小的正整数都可以表示为的不同除数之和n。 例如,18是一个实际数字:其除数为1、2、3、6、9和18,小于18的其他正整数可以形成如下: 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

10
机智的程序
目的 您将要编写一个程序,该程序接收一个整数n作为输入(从命令行),并将其自身(该程序)n目录嵌入目录树下。范例n=5: 文件夹名称可以是您想要的任何名称。唯一的要求是深度正确,然后可以从目录树中的新位置再次运行该程序,并且新的源文件保留相同的文件名。 奖金: 得分* 0.9如果目录都具有不同的名称(至少对深度1000万为真) 得分* 0.5如果您不直接或间接读取或移动源文件,或访问程序的源代码

9
缩短绝对路径
有时,使用当前工作目录作为参考,可以缩短长的绝对路径,例如linux工具的命令行参数。 $ pwd /home/heh $ cat /home/heh/mydir/myfile my stuff $ cat mydir/myfile my stuff 在这个挑战中,您应该使一个函数或程序接收两个参数: 绝对路径,使用linux格式(以开头/) 当前目录,使用相同格式 输出是以下两者中的较短者: 输入1不变 与绝对路径引用相同文件/目录的相对路径 重点: 如果您的操作系统与linux兼容,则可以使用系统的当前目录而不是将其接收为输入 您可以假定输入仅包含字母数字字符(和路径分隔符) 您可以假设输入的绝对路径/末尾没有路径分隔符 您可以假设输入的当前目录/在末尾有路径分隔符 您不能假定绝对路径引用了一个现有文件,或者该文件的任何部分都是可访问的目录;但是,可以假定当前目录有效 您可以假设在任何一条路径附近都没有符号链接-因为我不想使用任何特殊的方式来处理符号链接 无需支持其中两个输入均为根目录的情况 “当前目录”应输出为.(空字符串无效) 测试用例(输入1,输入2,输出): /home/user/mydir/myfile /home/user mydir/myfile /var/users/admin/secret/passwd /var/users/joe/hack ../../admin/secret/passwd /home/user/myfile /tmp/someplace /home/user/myfile /dir1/dir2 /dir1/dir2/dir3/dir4 ../.. /dir1/dir2 /dir1/dir2 .

1
隐藏邪恶代码-在目录树中的任何位置打印包含给定字符串的文件
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 3年前关闭。 这个难题的重点是学习如何在程序中隐藏和发现恶意代码。 一个人在问一个问题: 请给我一些代码,该如何找到文件的代码可能位于“当前目录”或其子目录中。 (这是我在一个网站上看到的一个真实问题的变体。) 更具体地说:OP希望您编写一个接受字符串和目录的程序。它将遍历目录中的所有文件并递归遍历其所有子目录。对于每个文件,它将检查文件是否包含字符串,如果包含,则将打印文件的名称。(如果需要,该程序可以具有其他功能,只要它们与主要目标相关即可。)对遍历顺序没有任何要求。 但是,这个难题的主要任务是在程序中隐藏其他代码,这些代码会使在用户/同事/老板/等人眼中要求该程序的人变得愚蠢。例如,在某个时候打印出侮辱性的文字,例如:该程序的作者不知道如何编程,应退还其文凭并被解雇。要有创造力。 规则: 该解决方案一定不会有害(当然,除了愚弄OP外)。它一定不能对最终用户造成任何不可逆转的伤害(没有类似之类的东西rm -rf!)!此类解决方案将被取消资格。 拖钓的物品应隐藏起来,以免OP轻易找到它。 您正在拖曳OP并不明显。该代码应该看起来是真实的。 解决方案必须附带适当的解释,说明它如何拖延OP,以便每个人都可以从您的解决方案中学到一些东西。解释应隐藏在单击后隐藏的文本(“扰流板”)中。进行判断时,请尝试查找巨魔而不看解释,并为难以发现的那些投票。 如果尝试多次运行该代码,也请尝试从OP隐藏该拖钓。也许只在特定日期之后或在草率的程序员不会测试的某些条件下才开始拖钓。要有创造力,不要忘了解释这个技巧。 不要只使用现有工具(例如grep或)创建脚本find。从头开始编写程序。最好避免使用库,而更喜欢低级调用-这将使代码更复杂,并使您有机会在其中隐藏恶意内容。 这是一场人气竞赛。请根据以上几点进行判断。

10
从潜在的巨大文件中读取n条随机行
这个挑战是关于从潜在的巨大文件中读取随机行,而不是将整个文件读取到内存中。 输入值 整数n和文本文件的名称。 输出量 n 文本文件的多行随机选择而不替换。 您可以假定该n值在文件行数的范围内(1)。 n从您得到的答案是一致的范围内随机抽样数字时,请当心。rand()%n例如,C中的代码不一致。每个结果都必须具有同等的可能性。 规则与限制 文本文件的每一行将具有相同数量的字符,并且最多不超过80个字符。 您的代码不得读取文本文件的任何内容,但以下情况除外: 它输出的那些行。 第一行计算出文本文件中每行有多少个字符。 我们可以假设文本文件中的每个字符仅占用一个字节。 行分隔符假定为1个字节长。解决方案仅在指定此需求时才可以使用2字节长的行分隔符。您还可以假设最后一行由行分隔符终止。 您的答案应该是完整的程序,但是您可以通过任何方便的方式指定输入。 语言和图书馆 您可以使用任何喜欢的语言或库。 笔记 人们担心要计算文件中的行数。正如nimi在注释中指出的那样,您可以从文件大小和每行字符数推断出这一点。 动机 在聊天中,有人问这是否真的是“没有Y的X”。我解释这是为了问这些限制是否异常人为。 从海量文件中随机采样行的任务并不罕见,实际上我有时必须要做。一种方法是在bash中: shuf -n <num-lines> 但是,这对于大型文件来说非常慢,因为它会读取整个文件。

15
手动逻辑门
编写一个模拟基本逻辑门的程序。 输入:一个全大写单词,后跟2个1位二进制数字,以空格分隔,例如OR 1 0。门OR,AND,NOR,NAND,XOR,和XNOR需要。 输出:输入的逻辑门的输出将被赋予两个数字:1或0。 例子: AND 1 0成为0 XOR 0 1变得1 OR 1 1成为1 NAND 1 1成为0 这是codegolf,所以最短的代码获胜。
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

17
克隆自己!
您将要创建一个程序,该程序可以无限创建自己的精确克隆,直到停止为止。原始程序中的所有内容都必须在克隆中。换句话说,克隆和原始程序在每种方式上都是相同的,只是克隆不必与源代码位于同一文件类型(它们可以是文本文件)。 例: 如果我的原始程序是: for i in range(0, 10): print i 克隆还必须是: for i in range(0, 10): print i 规则和说明: 禁止出现标准漏洞 副本必须是原始副本的精确副本 克隆必须是可读文件,如果放入正确的解释器中,则可以运行 该程序可以读取自己的源代码 所有克隆都必须是单独的文件 不允许打印程序 文件名计入字节数 克隆不必与源文件位于同一目录中,也不必共享相同的文件名 至少应能创建1000个克隆 获奖情况: 最小字节获胜!

4
解读Pig系列
给定Pig, SickPig, DeadPig, QuinePig或 DeafPig程序的输入,请随机选择这些“语言”之一,并将输入解释为该“语言”。 首先,在“猪系列”的五个成员之一中随机选择: 猪 如果选择是Pig,请执行以下操作来模仿参考口译员: 查找PIG输入中单词的第一个匹配项(区分大小写)。 如果PIG输入中未出现该单词,则输出消息 File must contain the string 'PIG'.并退出。 否则,在第一次出现时拆分输入字符串PIG。将第一次出现后的文本输出PIG到文件名为之前的文件PIG。 PIG可能包含在要输出的文本中(因此,的输入 fooPIGbarPIGbaz应输出barPIGbaz到名为的文件中foo)。 请注意,参考解释器通过命令行参数获取输入,该命令行参数指定要读取的文件名。但是,您的提交可以采用PPCG接受的任何标准方法进行输入。 病猪 如果选择的是SickPig,请遵循与Pig相同的说明。但是,与其将文本写到PIG文件中,不如从下面的列表中随机选择 GRUNT MOAN OINK BURP GROAN WHINE 并将其输出到文件中。此随机选择必须独立于先前的选择(因此,的输出GRUNT总体应具有1/5 * 1/6 = 1/30的机会)。 死猪 DeadPig类似于SickPig,但它始终输出以下字符串,而不是随机选择一个字符串: Your pig has unfortunately died. Please try again. QuinePig QuinePig就像Pig一样,但是PIG它没有将文本写到文件中,而是将整个输入写到文件中(因此,的输入 fooPIGbarPIGbaz应输出fooPIGbarPIGbaz到名为的文件中foo)。 聋猪 如果选择的是DeafPig,则什么也不做。(这只猪是聋的……你期望什么?) 杂项规则: “随机”表示每个选择的可能性大致相同(因此,在90%的时间内选择Pig,而在其他2.5%的时间内选择其他变体都是无效的)。 …

8
删除那些讨厌的“ .DS_Store”文件
如果使用OS X,则可能会因使用Finder而臭名昭著的隐藏“ .DS_Store”文件。 挑战在于编写将遍历整个文件系统的代码,并删除任何名为“ .DS_Store”的文件。 高尔夫经典代码-最短代码获胜。 说明: 代码中并没有需要删除需要超级用户的任何.DS_Store文件; 假设不存在此类文件。 该代码仅应删除相关的.DS_Store文件,而不能删除其他任何文件。

14
检查文件仅包含空字节
您的目标是编写一个程序或函数,该程序或函数接受代表文件路径的字符串作为输入,并在该文件不为空且不包含非空字节的情况下输出真实值-即所有位均为0- -否则为假值。 我意识到这是一个非常简单的问题,我想我可以破解一些东西,但是我怀疑必须有一些简短而优雅的方法来做,这给了我一个挑战的想法。 这是代码高尔夫球,因此以字节为单位的最短代码获胜。(我个人倾向于使用最快的解决方案,但这也取决于实现方式...) 相关问题:用零填充文件 动机:这只是为了告诉您问题出在哪里,以防您感兴趣。您不需要阅读它。 用“ dd”或其他方式复制的CD和DVD的ISO映像通常以仅包含空字节的无用块序列终止。删除这些块的标准技术是已知且简单的(请参阅 /unix/74827/),但是它们有时可能会删除非null有用的数据,因为介质的大小可能取决于其自身大小。因此,我想检查已删除的块是否仅包含空字节。删除这些块对于定义ISO映像的规范化版本很重要。

14
用零填充文件
今天的任务是获取一个现有文件,并将零添加到该文件,直到达到一定大小为止。 您必须编写一个程序或函数,该程序或函数采用当前目录中文件的名称f和字节数b。在保留的原始内容的同时f,您必须在末尾写入零(空字节,而不是ascii 0),以便其新大小为b字节。 您可以假设名称中f仅包含字母数字的ascii,您对此具有完全权限,其初始大小不大于b,但可能与一样大b,并且有无限的可用磁盘空间。 您可能不会假设f它是非空的,或者它不已经包含空字节。 执行结束后,不应修改其他现有文件,也不应该存在新文件。 测试用例 f的内容| b | f的结果内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

4
H树目录
程序员经常沉迷于绘制分形。我认为我们需要一种新的基于计算机的介质。 的ħ树是一个相当简单的类型的分形制成的水平线和垂直线。这是第十次迭代(由Wikipedia提供): 现在,假设图像中的每一行都是标准计算机文件系统中的目录(文件夹)。除最小的线外,所有线都相交于比自己小的两条线。这两条较小的线是较大线的子目录。因此,中间的大水平线是两条最大的垂直线的父目录,这两个垂直线又是图像中其余线的父级,祖父母等。 挑战 编写一个程序,该程序通过stdin或命令行(或最接近的替代方案)接收一个正整数N,并创建一个目录树,该目录树反映了H树形的第N次迭代。 第一次迭代(N = 1)是一条水平线。在每个后续迭代中,将一组新的垂直线或水平线添加到当前线的末端。因此,对于N = 2,添加两条垂直线(形成H形),对于N = 3,添加四条水平线,依此类推。 根目录的名称必须始终为tree。子目录的名称必须是它们相对于它们的父行,使用方向一致right,left,up和down。 由于根目录始终是一条水平线,因此它将始终具有right和left子目录。但是,这两个会up和down子目录,以及那些将right和left再次,等等。 迭代限制末尾的目录应该为空。 例 对于N = 3,目录树应如下所示: tree right up down left up down 附加信息 理想情况下,该tree目录将弹出源代码所在的文件夹,但是如果转到某个工作目录也可以。 您可能会假设tree您将在其中创建目录的地方没有预先存在的目录。 您可能会假设您的程序将始终在相同的常见现代操作系统(Mac / Windows / Linux)上运行。基本上不必担心使用并非在所有操作系统上都起作用的文件分隔符。 计分 这是代码高尔夫球,因此以字节为单位的最短代码获胜。

30
创建并写入文件
挑战 创建一个新文件并将字符串写入Hello World其中。 限制条件 您的挑战必须写入文件系统中磁盘上的文件。 该文件可能不是在解释器正常运行期间生成的日志文件。 该文件只能包含字符串Hello World。允许包含尾随换行符或最小空格。没有其他内容。 除非需要运行程序,否则不允许命令行标志/管道(等)。(例如perl -p) 笔记 这是代码高尔夫球,因此最短的程序以字节为单位。 遵循规则的精神而不是文字。

7
代码高尔夫:目录树->树
竞赛(!):使用您选择的语言,编写一个程序,该程序将遍历给定目录的目录树并输出与之对应的树(即数组数组)。假定目录是一个预定义的变量D。以最少的字符数为准。 规则: 您必须使用递归 见规则 注意:假定没有递归深度限制。换句话说,您的代码只需要为足够小的目录树工作,原则上就可以为更大的目录树工作。 例如: 目录树是 dir1 ├── dir11 │ ├── file111 │ └── file112 ├── dir12 │ ├── file121 │ ├── file122 │ └── file123 ├── file11 ├── file12 └── file13 输出树是 [[[],[]],[[],[],[]],[],[],[]] 这里的第一个代码高尔夫,让我知道我做错了什么。 玩得开心 :)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.