小编Pet*_*ton的帖子

在Ruby中映射和删除nil值

我有一个地图,可以更改值或将其设置为零.然后我想从列表中删除nil条目.该列表不需要保留.

这就是我目前拥有的:

# A simple example function, which returns a value or nil
def transform(n)
  rand > 0.5 ? n * 10 : nil }
end

items.map! { |x| transform(x) } # [1, 2, 3, 4, 5] => [10, nil, 30, 40, nil]
items.reject! { |x| x.nil? } # [10, nil, 30, 40, nil] => [10, 30, 40]
Run Code Online (Sandbox Code Playgroud)

我知道我可以做一个循环并有条件地收集另一个数组,如下所示:

new_items = []
items.each do |x|
    x = transform(x)
    new_items.append(x) unless x.nil?
end
items = new_items
Run Code Online (Sandbox Code Playgroud)

但它似乎不是红宝石般的.有没有一种很好的方法可以在列表中运行一个函数来删除/排除nils?

ruby

334
推荐指数
8
解决办法
22万
查看次数

使用命令行工具计算文件中的行长度

问题

如果我有一个包含许多不同长度行的长文件,我如何计算每个行长度的出现次数?

例:

file.txt的

this
is
a
sample
file
with
several
lines
of
varying
length
Run Code Online (Sandbox Code Playgroud)

跑步count_line_lengths file.txt会给:

Length Occurences
1      1
2      2
4      3
5      1
6      2
7      2
Run Code Online (Sandbox Code Playgroud)

想法?

bash shell scripting command-line

61
推荐指数
4
解决办法
5万
查看次数

你能在SASS/SCSS CSS中使用多个条件吗?

我正在使用SCSS代码来设置我的ruby应用程序的样式,并且我正在尝试编写自己的"圆形"mixin以帮助进行多浏览器边框舍入.

目前我有以下内容:

@mixin rounded($corner: all , $radius: 8px) {
  @if $corner==all || $corner==bottom || $corner == right || $corner==bottom-right{webkit-border-bottom-right-radius: $radius;}
  @if $corner==all || $corner==bottom || $corner == left || $corner==bottom-left{-webkit-border-bottom-left-radius: $radius;}
  @if $corner==all || $corner==top || $corner == right || $corner==top-right{-webkit-border-top-right-radius: $radius;}
  @if $corner==all || $corner==bottom || $corner == left || $corner==top-left{-webkit-border-top-left-radius: $radius;}

  @if $corner==all || $corner==bottom || $corner == right || $corner==bottom-right{-khtml-border-radius-bottomright: $radius;}
  @if $corner==all || $corner==bottom || $corner == left || $corner==bottom-left{-khtml-border-radius-bottomleft: $radius;}
  @if $corner==all || $corner==top || …
Run Code Online (Sandbox Code Playgroud)

html css ruby sass

13
推荐指数
1
解决办法
2万
查看次数

改进SQL中的GROUP BY

脚本

我们有很多人,这些人带着多个阶段/州进行旅行(最初计划,然后开始,然后返回_安全或在灾难中结束).

我有一个查询可以得到正确的结果,你可以在这里看到并使用它:

http://sqlfiddle.com/#!15/2e096/1

但是,我想知道是否有更好的实现,特别是避免使用GROUP BY和postgres' bool_and,也可能避免嵌套查询.

我们想知道什么

谁从未经历过旅行,他们没有安全返回?

或者,换句话说:

谁有:1. Never planned or gone on a trip2. only ever returned safely

澄清

  • 如果在旅行表中有一个人的记录,但没有阶段,他们计划旅行.

产量

至少应该是person表中的所有列,如果其他列也出来,那很好.

设置/复制

CREATE TABLE people (person_name text, gender text, age integer);
INSERT INTO people (person_name, gender, age)
  VALUES ('pete', 'm', 10), ('alan', 'm', 22), ('jess', 'f', 24), ('agnes', 'f', 25), ('matt', 'm', 26);

CREATE TABLE trips (person_name text, trip_name text);
INSERT INTO trips (person_name, trip_name)
  VALUES …
Run Code Online (Sandbox Code Playgroud)

sql postgresql

11
推荐指数
1
解决办法
149
查看次数

使用Prolog中的cut来定义once_member/2函数

免责声明:这是我自己的非正式和非评估课程.我自己尝试过,失败了,现在正在寻找一些指导.

我正在尝试实现一个成员/ 2函数的版本,它只返回一次列表的成员.

例如:

| ?- member(X, [1,2,3,1]).
X = 1 ? ;
X = 2 ? ;
X = 3 ? ;
X = 1 ? ;
Run Code Online (Sandbox Code Playgroud)

我希望它只能打印出最多一次的每个数字.

| ?- once_member(X, [1,2,3,1]).
X = 1 ? ;
X = 2 ? ;
X = 3 ? ;
no
Run Code Online (Sandbox Code Playgroud)

我们被告知用切割'!'做到这一点 操作员,但我已经查看了我的课程笔记和更多的在线,但仍然不能让它点击我的头!

到目前为止,我已设法得到:

once_member(E, [E | L]) :- !.
once_member(E, [_, L]) :-
    once_member(E, L).
Run Code Online (Sandbox Code Playgroud)

哪个返回1然后没有别的,我觉得我的切割位置错误并阻止了每个可能的匹配的回溯但我真的不确定下一步该去哪里.

我查看了我的课程笔记,并查看了:http://www.cs.ubbcluj.ro/~csatol/log_funk/prolog/slides/5-cuts.pdfProlog编程(Google Books)

关于如何在逻辑上应用切割的指导将是最有用的,但答案可能有助于我自己解决这个问题.

我们也被告知要做另一种使用'\ +'否定失败的方法,但希望这一切可能更简单一旦削减了我?

prolog prolog-cut

8
推荐指数
1
解决办法
584
查看次数

从2D numpy数组中删除运行

给定2D numpy数组:

00111100110111
01110011000110
00111110001000
01101101001110
Run Code Online (Sandbox Code Playgroud)

是否有替代运行的有效方式,1这是>= N长?

例如,如果 N=3

00222200110222
02220011000110
00222220001000
01101101002220
Run Code Online (Sandbox Code Playgroud)

实际上,2D数组是二进制的,我想用0替换1的运行,但为了清楚起见,我在上面的例子中用2替换它们.

Runnable示例:http://runnable.com/U6q0q-TFWzxVd_Uf/numpy-replace-runs-for-python

我目前使用的代码看起来有点hacky,我觉得可能有一些神奇的numpy方式:

更新:我知道我将示例更改为不处理极端情况的版本.这是一个小的实现错误(现已修复).如果有更快的方法,我更感兴趣.

import numpy as np
import time

def replace_runs(a, search, run_length, replace = 2):
  a_copy = a.copy() # Don't modify original
  for i, row in enumerate(a):
    runs = []
    current_run = []
    for j, val in enumerate(row):
      if val == search:
        current_run.append(j)
      else:
        if len(current_run) >= run_length or j == len(row) -1:
          runs.append(current_run) …
Run Code Online (Sandbox Code Playgroud)

python arrays algorithm numpy

8
推荐指数
1
解决办法
265
查看次数

在Haskell中讨论3个参数

我在使用函数来删除Haskell中的三个参数时遇到了麻烦.

免责声明:不是课程作业,今天有人在挣扎着问我这个问题,这一直困扰着我.

我们给出的自定义类型/函数是(只能记住类型)

type MyThing
  = (Char, String)
type MyThings
  = [MyThing]

funcA :: MyThings -> String -> String
funcB :: MyThings -> String -> Int -> String
Run Code Online (Sandbox Code Playgroud)

我们开始:

funcB as str n = iterate (funcA as) str !! n
Run Code Online (Sandbox Code Playgroud)

并将其减少如下:

funcB as str n = iterate (funcA as) str !! n
funcB as str = (!!) . (iterate (funcA as)) str
funcB as = (!!) . (iterate (funcA as))
funcB as = (!!) . (iterate . funcA) as
Run Code Online (Sandbox Code Playgroud)

然后,卡住了.我们无法弄清楚如何避免使用最后一个参数.我知道我以前见过类似的情况并且有一个解决方案. …

haskell pointfree

7
推荐指数
3
解决办法
916
查看次数

用于ElevateZoom jQuery插件的AngularJS指令

我正在尝试在角度应用程序中使用ElevateZoom jQuery插件.

基本上,要正常使用ElevateZoom,您可以按如下方式创建图像:

<img id="my-img" src="small.jpg" data-zoom-image="big.jpg" />
Run Code Online (Sandbox Code Playgroud)

然后在你的应用程序JS中:

$('#my-img').elevateZoom(options);
Run Code Online (Sandbox Code Playgroud)

这在标准应用程序中工作正常.但是当我尝试使用指令在我的AngularJS应用程序中执行它时(我遵循了一些SO的答案,将jquery插件转换为带指令的角度)我无法使其工作.

关于Plunkr的实时可编辑演示:http://plnkr.co/edit/Mu4EOcGtGs7XVDDUvnnB?p = preview

我的指令如下:

app.directive('ngElevateZoom', function() {
  return {
    restrict: 'A',
    scope: true,
    compile: function(scope, element, attrs) {
      $(element).elevateZoom(scope.$eval(attrs.elevateZoom));
    }
  };
});
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像这样:

<img ng-elevate-zoom ng-src="{{small_image}}" data-zoom-image="{{large_image}}" />
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我几天只试过Angular,所以对我很轻松;)

javascript jquery angularjs angularjs-directive

7
推荐指数
1
解决办法
1万
查看次数

在rails中记录用户事件

我目前正在尝试为我的rails应用程序的管理部分实现日志.这将允许管理员查看用户执行了什么操作以及何时执行.例如'用户添加了新地址','用户将他们的邮政编码从X更新为Y'.

由于每个动作都可能涉及许多模型,而不仅仅是用户,我创建了一个日志模型,其中包含所有其他系统模型ID,消息和日志代码的字段.

class CreateLogs < ActiveRecord::Migration
  def self.up
    create_table :logs do |t|
      t.integer :user_id
      t.integer :marker_id
      t.integer :administrator_id
      t.integer :group_id
      t.integer :assignment_id
      t.integer :submission_id
      t.integer :code
      t.text :message

      t.timestamps
    end
  end

  def self.down
    drop_table :logs
  end
end
Run Code Online (Sandbox Code Playgroud)

我担心的是,例如,用户可以(让我们说)在他们的帐户中添加一个作业,它会被记录为

Log.create(:user_id => current_user.id, :assignment_id => the_assignment.id, :code => 342, :message => '')
Run Code Online (Sandbox Code Playgroud)

(某处代码342对应于'用户创建了一个新地址',因此不需要消息)

显然,在日志视图中,我可以从日志ID /详细信息中提取相关用户和地址信息,但是如果要删除此用户或地址,则所有信息都将不可用,因此回顾日志,条目将是基本没用.

必须有更好的方法或某些东西来帮助记录这样的系统事件并应对潜在的删除.

或者,我可以将整个条目存储为文本消息,但这不是非常糟糕并且不必要地填满数据库吗?

如果其中任何一个不清楚,请告诉我,只需要记录日志应用程序操作/事件之前已经完成!

谢谢,

皮特

database logging activerecord action ruby-on-rails

5
推荐指数
1
解决办法
1344
查看次数

在汇编中声明可变大小的数组

我正在编写一个汇编程序,我希望能够执行以下(基本)操作:

x = 100;
y = int[x]
Run Code Online (Sandbox Code Playgroud)

例如,y 的大小取决于 x 的值。

注意:我在 64 位 Ubuntu 系统上使用 NASM 指令集。

在汇编中,我知道数组的大小需要在文件的数据部分中声明,例如

myvariable resq 1000
Run Code Online (Sandbox Code Playgroud)

问题是在我完成之前的计算之前我不知道它有多大。我真正想要的是这样的:

mov rax, 100
myvariable resq rax
Run Code Online (Sandbox Code Playgroud)

但这是不允许的吧?只是对汇编中的数组访问/声明有些困惑。

任何指示表示赞赏!

arrays assembly x86-64 nasm variable-length-array

5
推荐指数
1
解决办法
7783
查看次数